Skip to content

Commit 321c30e

Browse files
committed
* replace autoprefixer-loader by postcss-loader with cssnext (closes #260)
* use 'options' instead of 'query' in webpack config * move service-worker.js to dist directory
1 parent 7025bea commit 321c30e

9 files changed

Lines changed: 78 additions & 41 deletions

File tree

.bootstraprc

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,21 @@
55
"loglevel": "disabled",
66
"env": {
77
"development": {
8-
"styleLoaders": ["style-loader", "css-loader", "resolve-url-loader", "sass-loader"],
8+
"styleLoaders": [
9+
"style-loader?sourceMap",
10+
"css-loader?sourceMap&importLoaders=2",
11+
"resolve-url-loader",
12+
"sass-loader?sourceMap"
13+
],
914
"extractStyles": false
1015
},
1116
"production": {
12-
"styleLoaders": ["style-loader", "css-loader", "resolve-url-loader", "sass-loader"],
17+
"styleLoaders": [
18+
"style-loader",
19+
"css-loader?importLoaders=2",
20+
"resolve-url-loader",
21+
"sass-loader?sourceMap"
22+
],
1323
"extractStyles": true
1424
}
1525
},

.dockerignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
node_modules/
44
yarn.lock
55
static/dist/
6-
static/service-worker.js
76
*.iml
87
webpack-assets.json
98
webpack-stats.json

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
node_modules/
33
yarn.lock
44
static/dist/
5-
static/service-worker.js
65
*.iml
76
webpack-assets.json
87
webpack-stats.json

package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,6 @@
160160
"superagent": "^3.4.4"
161161
},
162162
"devDependencies": {
163-
"autoprefixer-loader": "^3.2.0",
164163
"babel-eslint": "^7.1.1",
165164
"babel-jest": "^20.0.1",
166165
"babel-loader": "^7.0.0",
@@ -171,6 +170,7 @@
171170
"clean-webpack-plugin": "^0.1.15",
172171
"concurrently": "^3.3.0",
173172
"css-loader": "^0.28.0",
173+
"cssnext": "^1.8.4",
174174
"eslint": "^3.15.0",
175175
"eslint-config-airbnb": "^15.0.0",
176176
"eslint-loader": "^1.6.1",
@@ -200,6 +200,8 @@
200200
"phantomjs-polyfill": "^0.0.2",
201201
"phantomjs-prebuilt": "^2.1.14",
202202
"piping": "^1.0.0-rc.4",
203+
"postcss-import": "^10.0.0",
204+
"postcss-loader": "^2.0.5",
203205
"react-a11y": "^0.3.3",
204206
"react-addons-test-utils": "^15.4.2",
205207
"react-hot-loader": "^3.0.0-beta.3",
@@ -210,7 +212,6 @@
210212
"resolve-url-loader": "^2.0.0",
211213
"sass-loader": "^6.0.1",
212214
"sinon": "^2.1.0",
213-
"strip-loader": "^0.1.2",
214215
"style-loader": "^0.17.0",
215216
"sw-precache-webpack-plugin": "^0.11.0",
216217
"timekeeper": "^1.0.0",

postcss.config.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
module.exports = ({ file, options }) => ({
2+
plugins: [
3+
require('postcss-import')({ root: file.dirname }),
4+
require('cssnext')(options.cssnext ? options.cssnext : false)
5+
]
6+
});

src/client.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ Promise.all([window.__data ? true : isOnline(), getStoredState(offlinePersistCon
112112
}
113113

114114
if (online && !__DEVELOPMENT__ && 'serviceWorker' in navigator) {
115-
navigator.serviceWorker.register('/service-worker.js', { scope: '/' })
115+
navigator.serviceWorker.register('/dist/service-worker.js', { scope: '/' })
116116
.then(() => {
117117
console.log('Service worker registered!');
118118
})

src/server.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,14 @@ app.use(compression());
3636
app.use(favicon(path.join(__dirname, '..', 'static', 'favicon.ico')));
3737
app.get('/manifest.json', (req, res) => res.sendFile(path.join(__dirname, '..', 'static', 'manifest.json')));
3838

39+
app.use('/dist/service-worker.js', (req, res, next) => {
40+
res.setHeader('Service-Worker-Allowed', '/');
41+
return next();
42+
});
43+
3944
app.use(express.static(path.join(__dirname, '..', 'static')));
4045

4146
app.use((req, res, next) => {
42-
res.setHeader('Service-Worker-Allowed', '*');
4347
res.setHeader('X-Forwarded-For', req.ip);
4448
return next();
4549
});

webpack/dev.config.js

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -125,41 +125,50 @@ var webpackConfig = module.exports = {
125125
plugins: [
126126
// hot reload
127127
new webpack.HotModuleReplacementPlugin(),
128+
128129
new webpack.IgnorePlugin(/webpack-stats\.json$/),
130+
129131
new webpack.DefinePlugin({
130132
__CLIENT__: true,
131133
__SERVER__: false,
132134
__DEVELOPMENT__: true,
133135
__DEVTOOLS__: true // <-------- DISABLE redux-devtools HERE
134136
}),
137+
135138
webpackIsomorphicToolsPlugin.development(),
136139

137140
helpers.createHappyPlugin('jsx', [
138141
{
139142
loader: 'react-hot-loader/webpack'
140143
}, {
141144
loader: 'babel-loader',
142-
query: babelLoaderQuery
145+
options: babelLoaderQuery
143146
}, {
144147
loader: 'eslint-loader',
145148
options: { emitWarning: true }
146149
}
147150
]),
148151
helpers.createHappyPlugin('less', [
149152
{
150-
loader: 'style-loader'
153+
loader: 'style-loader',
154+
options: { sourceMap: true }
151155
}, {
152156
loader: 'css-loader',
153-
query: {
157+
options: {
154158
modules: true,
155159
importLoaders: 3,
156160
sourceMap: true,
157161
localIdentName: '[local]___[hash:base64:5]'
158162
}
159163
}, {
160-
loader: 'autoprefixer-loader',
161-
query: {
162-
browser: 'last 2 version'
164+
loader: 'postcss-loader',
165+
options: {
166+
sourceMap: true,
167+
ctx: {
168+
cssnext: {
169+
browsers: 'last 2 version'
170+
}
171+
}
163172
}
164173
}, {
165174
loader: 'resolve-url-loader',
@@ -173,25 +182,31 @@ var webpackConfig = module.exports = {
173182
]),
174183
helpers.createHappyPlugin('sass', [
175184
{
176-
loader: 'style-loader'
185+
loader: 'style-loader',
186+
options: { sourceMap: true }
177187
}, {
178188
loader: 'css-loader',
179-
query: {
189+
options: {
180190
modules: true,
181191
importLoaders: 3,
182192
sourceMap: true,
183193
localIdentName: '[local]___[hash:base64:5]'
184194
}
185195
}, {
186-
loader: 'autoprefixer-loader',
187-
query: {
188-
browsers: 'last 2 version'
196+
loader: 'postcss-loader',
197+
options: {
198+
sourceMap: true,
199+
ctx: {
200+
cssnext: {
201+
browsers: 'last 2 version'
202+
}
203+
}
189204
}
190205
}, {
191206
loader: 'resolve-url-loader',
192207
}, {
193208
loader: 'sass-loader',
194-
query: {
209+
options: {
195210
outputStyle: 'expanded',
196211
sourceMap: true
197212
}

webpack/prod.config.js

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ var path = require('path');
55
var webpack = require('webpack');
66
var CleanPlugin = require('clean-webpack-plugin');
77
var ExtractTextPlugin = require('extract-text-webpack-plugin');
8-
var strip = require('strip-loader');
98

109
var projectRootPath = path.resolve(__dirname, '../');
1110
var assetsPath = path.resolve(projectRootPath, './static/dist');
@@ -40,14 +39,7 @@ module.exports = {
4039
rules: [
4140
{
4241
test: /\.jsx?$/,
43-
use: [{
44-
loader: 'strip-loader',
45-
options: {
46-
strip: ['debug']
47-
}
48-
}, {
49-
loader: 'babel-loader'
50-
}],
42+
loader: 'babel-loader',
5143
exclude: /node_modules/
5244
}, {
5345
test: /\.less$/,
@@ -56,21 +48,26 @@ module.exports = {
5648
use: [
5749
{
5850
loader: 'css-loader',
59-
query: {
51+
options: {
6052
modules: true,
6153
importLoaders: 3,
6254
sourceMap: true
6355
}
6456
}, {
65-
loader: 'autoprefixer-loader',
66-
query: {
67-
browsers: 'last 2 version'
57+
loader: 'postcss-loader',
58+
options: {
59+
sourceMap: true,
60+
ctx: {
61+
cssnext: {
62+
browsers: 'last 2 version'
63+
}
64+
}
6865
}
6966
}, {
7067
loader: 'resolve-url-loader',
7168
}, {
7269
loader: 'less-loader',
73-
query: {
70+
options: {
7471
outputStyle: 'expanded',
7572
sourceMap: true,
7673
sourceMapContents: true
@@ -85,21 +82,26 @@ module.exports = {
8582
use: [
8683
{
8784
loader: 'css-loader',
88-
query: {
85+
options: {
8986
modules: true,
9087
importLoaders: 3,
9188
sourceMap: true
9289
}
9390
}, {
94-
loader: 'autoprefixer-loader',
95-
query: {
96-
browsers: 'last 2 version'
91+
loader: 'postcss-loader',
92+
options: {
93+
sourceMap: true,
94+
ctx: {
95+
cssnext: {
96+
browsers: 'last 2 version'
97+
}
98+
}
9799
}
98100
}, {
99101
loader: 'resolve-url-loader',
100102
}, {
101103
loader: 'sass-loader',
102-
query: {
104+
options: {
103105
outputStyle: 'expanded',
104106
sourceMap: true,
105107
sourceMapContents: true
@@ -148,14 +150,15 @@ module.exports = {
148150
extensions: ['.json', '.js', '.jsx']
149151
},
150152
plugins: [
151-
new CleanPlugin([assetsPath, 'static/service-worker.js'], { root: projectRootPath }),
153+
new CleanPlugin([assetsPath], { root: projectRootPath }),
152154

153155
// css files from the extract-text-plugin loader
154156
new ExtractTextPlugin({
155157
filename: '[name]-[chunkhash].css',
156158
// disable: false,
157159
allChunks: true
158160
}),
161+
159162
new webpack.DefinePlugin({
160163
'process.env.NODE_ENV': '"production"',
161164

@@ -185,7 +188,7 @@ module.exports = {
185188

186189
new SWPrecacheWebpackPlugin({
187190
cacheId: 'react-redux-universal-hot-example',
188-
filename: '../service-worker.js',
191+
filename: 'service-worker.js',
189192
maximumFileSizeToCacheInBytes: 8388608,
190193

191194
// Ensure all our static, local assets are cached.

0 commit comments

Comments
 (0)