Skip to content

Commit b45b73e

Browse files
EugeneHlushkomontogeek
authored andcommitted
feature(site) Migrate project to webpack4. Prepare for React 16 (#1964)
* feature(webpack4) Migrate project to webpack4. Prepare for React 16 * feature(webpack4) Cleanup in config * feature(webpack4) Remove preact * feature(webpack4) Fix formatting * feature(webpack4) Use redirect-webpack-plugin * feature(webpack4) Update webpack-dev-server to latest * feature(webpack4) Add fixed link redirects after rebase
1 parent 28d87fd commit b45b73e

File tree

6 files changed

+385
-591
lines changed

6 files changed

+385
-591
lines changed

antwar.bootstrap.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,14 @@ process.env.BABEL_ENV = environment;
77

88
antwar[environment]({
99
environment,
10-
antwar: require('./antwar.config'),
11-
webpack: require('./webpack.config')
10+
configurationPaths: {
11+
antwar: require.resolve("./antwar.config.js"),
12+
webpack: require.resolve("./webpack.config.js"),
13+
},
14+
}).then(() => {
15+
if (environment !== "build") {
16+
console.log("Surf to localhost:3000");
17+
}
1218
}).catch((err) => {
1319
console.error(err);
1420

antwar.config.js

Lines changed: 69 additions & 110 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
const path = require('path');
2-
const _ = require('lodash');
32
const combineContexts = require('./src/utilities/combine-contexts');
43

5-
module.exports = {
4+
module.exports = () => ({
65
maximumWorkers: process.env.TRAVIS && 1,
76
template: {
87
file: path.join(__dirname, 'template.ejs')
@@ -22,112 +21,72 @@ module.exports = {
2221
'writers-guide': '/contribute/writers-guide'
2322
}
2423
},
25-
concepts: {
26-
title: 'Concepts',
27-
url: ({ sectionName, fileName }) => `/${sectionName}/${fileName}/`,
28-
layout: () => require('./src/components/Page/Page.jsx').default,
29-
content: () => require.context('./loaders/page-loader!./src/content/concepts', false, /^\.\/.*\.md$/)
30-
},
31-
configuration: {
32-
title: 'Configuration',
33-
url: ({ sectionName, fileName }) => `/${sectionName}/${fileName}/`,
34-
layout: () => require('./src/components/Page/Page.jsx').default,
35-
content: () => require.context('./loaders/page-loader!./src/content/configuration', false, /^\.\/.*\.md$/)
36-
},
37-
api: {
38-
title: 'API',
39-
url: ({ sectionName, fileName }) => `/${sectionName}/${fileName}/`,
40-
layout: () => require('./src/components/Page/Page.jsx').default,
41-
content: () => require.context('./loaders/page-loader!./src/content/api', false, /^\.\/.*\.md$/),
42-
redirects: {
43-
'passing-a-config': 'configuration-types'
44-
}
45-
},
46-
guides: {
47-
title: 'Guides',
48-
url: ({ sectionName, fileName }) => `/${sectionName}/${fileName}/`,
49-
layout: () => require('./src/components/Page/Page.jsx').default,
50-
content: () => require.context('./loaders/page-loader!./src/content/guides', false, /^\.\/.*\.md$/),
51-
redirects: {
52-
'code-splitting-import': '/guides/code-splitting',
53-
'code-splitting-require': '/guides/code-splitting',
54-
'code-splitting-async': '/guides/code-splitting',
55-
'code-splitting-css': '/guides/code-splitting',
56-
'code-splitting-libraries': '/guides/code-splitting',
57-
'why-webpack': '/comparison',
58-
'production-build': '/guides/production'
59-
}
60-
},
61-
plugins: {
62-
title: 'Plugins',
63-
url: ({ sectionName, fileName }) => `/${sectionName}/${fileName}/`,
64-
layout: () => require('./src/components/Page/Page.jsx').default,
65-
content: () => {
66-
return combineContexts(
67-
require.context('./loaders/page-loader!./src/content/plugins', false, /^\.\/.*\.md$/),
68-
require.context('./loaders/page-loader!./generated/plugins', false, /^\.\/.*\.md$/)
69-
);
70-
}
71-
},
72-
loaders: {
73-
title: 'Loaders',
74-
url: ({ sectionName, fileName }) => `/${sectionName}/${fileName}/`,
75-
layout: () => require('./src/components/Page/Page.jsx').default,
76-
content: () => {
77-
return combineContexts(
78-
require.context('./loaders/page-loader!./src/content/loaders', false, /^\.\/.*\.md$/),
79-
require.context('./loaders/page-loader!./generated/loaders', false, /^\.\/.*\.md$/)
80-
);
81-
}
82-
},
83-
contribute: {
84-
title: 'Contribute',
85-
url: ({ sectionName, fileName }) => `/${sectionName}/${fileName}/`,
86-
layout: () => require('./src/components/Page/Page.jsx').default,
87-
content: () => require.context('./loaders/page-loader!./src/content/contribute', false, /^\.\/.*\.md$/),
88-
},
89-
vote: () => require('./src/components/Vote/Vote.jsx').default,
90-
organization: () => require('./src/components/Organization/Organization.jsx').default,
91-
'starter-kits': () => require('./src/components/StarterKits/StarterKits.jsx').default,
92-
93-
/*************************
94-
Redirects for Old Content
95-
*************************/
96-
'get-started': {
97-
hidden: true,
98-
redirects: {
99-
'': '/guides/getting-started',
100-
'install-webpack': '/guides/installation',
101-
'why-webpack': '/guides/why-webpack',
102-
}
103-
},
104-
pluginsapi: {
105-
hidden: true,
106-
redirects: {
107-
'': '/api/plugins',
108-
'compiler': '/api/compiler-hooks',
109-
'template': '/api/template'
110-
}
111-
},
112-
'api/plugins': {
113-
redirects: {
114-
'compiler': '/api/compiler-hooks',
115-
'compilation': '/api/compilation',
116-
'module-factories': '/api/module-methods',
117-
'parser': '/api/parser',
118-
'tapable': '/api/tapable',
119-
'template': '/api/template',
120-
'resolver': '/api/resolver'
121-
}
122-
},
123-
development: {
124-
redirects: {
125-
'': '/contribute',
126-
'plugin-patterns': '/contribute/plugin-patterns',
127-
'release-process': '/contribute/release-process',
128-
'how-to-write-a-loader': '/contribute/writing-a-loader',
129-
'how-to-write-a-plugin': '/contribute/writing-a-plugin'
130-
}
131-
}
24+
concepts: {
25+
title: 'Concepts',
26+
url: ({ sectionName, fileName }) => `/${sectionName}/${fileName}/`,
27+
layout: () => require('./src/components/Page/Page.jsx').default,
28+
content: () => require.context('./loaders/page-loader!./src/content/concepts', false, /^\.\/.*\.md$/)
29+
},
30+
configuration: {
31+
title: 'Configuration',
32+
url: ({ sectionName, fileName }) => `/${sectionName}/${fileName}/`,
33+
layout: () => require('./src/components/Page/Page.jsx').default,
34+
content: () => require.context('./loaders/page-loader!./src/content/configuration', false, /^\.\/.*\.md$/)
35+
},
36+
api: {
37+
title: 'API',
38+
url: ({ sectionName, fileName }) => `/${sectionName}/${fileName}/`,
39+
layout: () => require('./src/components/Page/Page.jsx').default,
40+
content: () => require.context('./loaders/page-loader!./src/content/api', false, /^\.\/.*\.md$/),
41+
redirects: {
42+
'passing-a-config': 'configuration-types'
43+
}
44+
},
45+
guides: {
46+
title: 'Guides',
47+
url: ({ sectionName, fileName }) => `/${sectionName}/${fileName}/`,
48+
layout: () => require('./src/components/Page/Page.jsx').default,
49+
content: () => require.context('./loaders/page-loader!./src/content/guides', false, /^\.\/.*\.md$/),
50+
redirects: {
51+
'code-splitting-import': '/guides/code-splitting',
52+
'code-splitting-require': '/guides/code-splitting',
53+
'code-splitting-async': '/guides/code-splitting',
54+
'code-splitting-css': '/guides/code-splitting',
55+
'code-splitting-libraries': '/guides/code-splitting',
56+
'why-webpack': '/comparison',
57+
'production-build': '/guides/production'
58+
}
59+
},
60+
plugins: {
61+
title: 'Plugins',
62+
url: ({ sectionName, fileName }) => `/${sectionName}/${fileName}/`,
63+
layout: () => require('./src/components/Page/Page.jsx').default,
64+
content: () => {
65+
return combineContexts(
66+
require.context('./loaders/page-loader!./src/content/plugins', false, /^\.\/.*\.md$/),
67+
require.context('./loaders/page-loader!./generated/plugins', false, /^\.\/.*\.md$/)
68+
);
69+
}
70+
},
71+
loaders: {
72+
title: 'Loaders',
73+
url: ({ sectionName, fileName }) => `/${sectionName}/${fileName}/`,
74+
layout: () => require('./src/components/Page/Page.jsx').default,
75+
content: () => {
76+
return combineContexts(
77+
require.context('./loaders/page-loader!./src/content/loaders', false, /^\.\/.*\.md$/),
78+
require.context('./loaders/page-loader!./generated/loaders', false, /^\.\/.*\.md$/)
79+
);
80+
}
81+
},
82+
contribute: {
83+
title: 'Contribute',
84+
url: ({ sectionName, fileName }) => `/${sectionName}/${fileName}/`,
85+
layout: () => require('./src/components/Page/Page.jsx').default,
86+
content: () => require.context('./loaders/page-loader!./src/content/contribute', false, /^\.\/.*\.md$/),
87+
},
88+
vote: () => require('./src/components/Vote/Vote.jsx').default,
89+
organization: () => require('./src/components/Organization/Organization.jsx').default,
90+
'starter-kits': () => require('./src/components/StarterKits/StarterKits.jsx').default,
13291
}
133-
};
92+
});

package.json

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@
4141
},
4242
"devDependencies": {
4343
"alex": "^4.1.0",
44-
"antwar": "^0.19.0",
45-
"antwar-helpers": "^0.19.0",
46-
"antwar-interactive": "^0.19.0",
44+
"antwar": "^0.28.3",
45+
"antwar-helpers": "^0.28.0",
46+
"antwar-interactive": "^0.28.0",
4747
"async": "^2.5.0",
4848
"autoprefixer": "^7.2.3",
4949
"babel-core": "^6.26.0",
@@ -53,19 +53,18 @@
5353
"babel-plugin-transform-object-rest-spread": "^6.26.0",
5454
"babel-preset-env": "^1.6.0",
5555
"babel-preset-react": "^6.24.1",
56-
"copy-webpack-plugin": "^4.3.0",
57-
"css-loader": "^0.28.5",
56+
"copy-webpack-plugin": "^4.4.2",
57+
"css-loader": "^0.28.10",
5858
"duplexer": "^0.1.1",
5959
"eslint": "4.5.0",
60-
"eslint-loader": "^1.9.0",
60+
"eslint-loader": "^2.0.0",
6161
"eslint-plugin-markdown": "^1.0.0-beta.7",
62-
"extract-text-webpack-plugin": "^3.0.0",
63-
"file-loader": "^0.11.2",
64-
"fontgen-loader": "^0.2.1",
62+
"file-loader": "^1.1.11",
63+
"fontgen-loader": "git://github.com/EugeneHlushko/fontgen-loader.git#a26a73843900ca4b518853952b1fc3c816103512",
6564
"front-matter": "^2.2.0",
6665
"gh-pages": "^1.0.0",
6766
"github": "^10.0.0",
68-
"html-webpack-plugin": "^2.30.1",
67+
"html-webpack-plugin": "^3.1.0",
6968
"http-server": "^0.10.0",
7069
"hyperlink": "^3.0.1",
7170
"loader-utils": "^1.1.0",
@@ -74,34 +73,33 @@
7473
"markdownlint": "^0.6.0",
7574
"markdownlint-cli": "^0.3.1",
7675
"marked": "^0.3.7",
76+
"mini-css-extract-plugin": "^0.2.0",
7777
"mkdirp": "^0.5.1",
7878
"modularscale-sass": "^3.0.3",
7979
"moment": "^2.20.1",
8080
"ncp": "^2.0.0",
8181
"node-sass": "^4.5.3",
8282
"npm-run-all": "^4.1.1",
83-
"postcss-loader": "^2.0.6",
83+
"postcss-loader": "^2.1.3",
8484
"prism-languages": "^0.3.3",
8585
"prismjs": "^1.9.0",
8686
"raw-loader": "^0.5.1",
87+
"redirect-webpack-plugin": "^0.1.1",
8788
"request": "^2.81.0",
8889
"sass-loader": "^6.0.6",
8990
"sitemap-static": "^0.4.2",
90-
"style-loader": "^0.18.2",
9191
"tap-min": "^1.2.1",
9292
"tap-parser": "^6.0.1",
9393
"through2": "^2.0.3",
9494
"url-loader": "^0.5.9",
95-
"webpack": "^3.10.0",
96-
"webpack-dev-server": "^2.9.7",
95+
"webpack": "^4.2.0",
96+
"webpack-dev-server": "^3.1.1",
9797
"webpack-merge": "^4.1.0",
9898
"yaml-frontmatter-loader": "^0.1.0"
9999
},
100100
"dependencies": {
101101
"ajv": "^5.5.2",
102102
"lodash.throttle": "^4.1.1",
103-
"preact": "^8.2.7",
104-
"preact-compat": "3.17.0",
105103
"prop-types": "^15.5.10",
106104
"react": "^15.6.1",
107105
"react-dom": "^15.6.1",

src/components/Link/Link.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React from 'react';
22
import startsWith from 'lodash/startsWith';
33

44
let RRouter;
5-
if (__DEV__) {
5+
if (process.env.NODE_ENV === 'development') {
66
RRouter = require('react-router-dom');
77
}
88

@@ -11,7 +11,7 @@ export default ({ to, ...props }) => {
1111
return <a href={to} target="_blank" {...props} />;
1212
}
1313

14-
if (__DEV__) {
14+
if (process.env.NODE_ENV === 'development') {
1515
return <RRouter.Link to={to} {...props} />;
1616
}
1717

0 commit comments

Comments
 (0)