-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstatic.config.js
More file actions
88 lines (87 loc) · 2.28 KB
/
Copy pathstatic.config.js
File metadata and controls
88 lines (87 loc) · 2.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
import axios from "axios";
export default {
getSiteData: () => ({
title: "React Static"
}),
getRoutes: async () => {
const { data: posts } = await axios.get(
"https://jsonplaceholder.typicode.com/posts"
);
return [
{
path: "/",
component: "src/containers/Home"
},
{
path: "/about",
component: "src/containers/About"
},
{
path: "/blog",
component: "src/containers/Blog",
getData: () => ({
posts
}),
children: posts.map(post => ({
path: `/post/${post.id}`,
component: "src/containers/Post",
getData: () => ({
post
})
}))
},
{
is404: true,
component: "src/containers/404"
}
];
},
webpack: (config, { defaultLoaders, stage }) => {
config.module.rules = [
{
oneOf: [
{
test: /\.cssm$/,
use:
stage === "dev"
? [
{
loader: "style-loader"
},
{
loader: "css-loader",
options: {
modules: true,
localIdentName: "[name]__[local]--[hash:base64:5]",
sourceMap: true,
namedExport: true,
camelCase: true,
minimize: false,
}
}
]
: ExtractTextPlugin.extract({
use: [
{
loader: "css-loader",
options: {
minimize: true,
sourceMap: process.env.REACT_STATIC_DEBUG,
modules: true,
localIdentName: process.env.REACT_STATIC_DEBUG
? "[name]__[local]--[hash:base64:5]"
: undefined
}
}
]
})
},
defaultLoaders.cssLoader,
defaultLoaders.jsLoader,
defaultLoaders.fileLoader
]
}
];
return config;
}
};