Skip to content

Commit def927a

Browse files
committed
initial webpack2 migration (SimulatedGREG#72) [skip ci]
1 parent 84bd10d commit def927a

File tree

5 files changed

+89
-17
lines changed

5 files changed

+89
-17
lines changed

template/.babelrc

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,16 @@
11
{
2+
{{#if_eq vueVersion '2.x'}}
3+
"env": {
4+
"testing": {
5+
"presets": ["es2015", "stage-0"]
6+
}
7+
},
8+
"presets": [
9+
["es2015", { "modules": false }],
10+
"stage-0"
11+
],
12+
{{else}}
213
"presets": ["es2015", "stage-0"],
14+
{{/if_eq}}
315
"plugins": ["transform-runtime"]
416
}

template/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
"test": "{{#unit}}npm run unit{{/unit}}{{#unit}}{{#e2e}} && {{/e2e}}{{/unit}}{{#e2e}}npm run e2e{{/e2e}}",
2323
{{/testing}}
2424
{{#if unit}}
25-
"unit": "karma start test/unit/karma.conf.js",
25+
"unit": "cross-env BABEL_ENV=testing karma start test/unit/karma.conf.js",
2626
{{/if}}
2727
{{#isEnabled plugins 'vue-router'}}
2828
"vue:route": "node tasks/vue/route.js",
@@ -65,7 +65,7 @@
6565
"eslint-plugin-import": "^1.8.1",
6666
{{/if_eq}}
6767
{{/eslint}}
68-
"extract-text-webpack-plugin": "^1.0.1",
68+
"extract-text-webpack-plugin": "^2.0.0-beta",
6969
"file-loader": "^0.8.5",
7070
"html-webpack-plugin": "^2.16.1",
7171
"json-loader": "^0.5.4",
@@ -98,8 +98,8 @@
9898
"vue-html-loader": "^1.2.2",
9999
{{ver vueVersion 'loader'}}
100100
"vue-style-loader": "^1.0.0",
101-
"webpack": "^1.13.0",
102-
"webpack-dev-server": "^1.14.1"
101+
"webpack": "^2.1.0-beta.25",
102+
"webpack-dev-server": "^2.1.0-beta.0"
103103
},
104104
"dependencies": {}
105105
}

template/test/e2e/index.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
'use strict'
2+
{{#if_eq vueVersion '2.x'}}
23

4+
// Set BABEL_ENV to use proper preset config
5+
process.env.BABEL_ENV = 'testing'
6+
7+
{{/if_eq}}
38
// Enable use of es2015 on required files
49
require('babel-register')({
510
ignore: /node_modules/

template/test/unit/karma.conf.js

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,13 @@ const projectRoot = path.resolve(__dirname, '../../app')
99

1010
let webpackConfig = merge(baseConfig, {
1111
devtool: '#inline-source-map',
12+
{{#if_eq vueVersion '1.x'}}
1213
vue: {
1314
loaders: {
1415
js: 'isparta'
1516
}
1617
},
18+
{{/if_eq}}
1719
plugins: [
1820
new webpack.DefinePlugin({
1921
'process.env.NODE_ENV': '"testing"'
@@ -25,20 +27,35 @@ let webpackConfig = merge(baseConfig, {
2527
delete webpackConfig.entry
2628

2729
// make sure isparta loader is applied before eslint
30+
{{#if_eq vueVersion '2.x'}}
31+
webpackConfig.module.rules.unshift({
32+
test: /\.js$/,
33+
loader: 'isparta-loader',
34+
enforce: 'pre',
35+
include: path.resolve(projectRoot, 'src')
36+
})
37+
{{else}}
2838
webpackConfig.module.preLoaders = webpackConfig.module.preLoaders || []
2939
webpackConfig.module.preLoaders.unshift({
3040
test: /\.js$/,
3141
loader: 'isparta',
3242
include: path.resolve(projectRoot, 'src')
3343
})
44+
{{/if_eq}}
3445

3546
// only apply babel for test files when using isparta
36-
webpackConfig.module.loaders.some((loader, i) => {
37-
if (loader.loader === 'babel') {
47+
webpackConfig.module.{{#if_eq vueVersion '2.x'}}rules{{else}}loaders{{/if_eq}}.some(loader => {
48+
if (loader.loader === 'babel-loader') {
3849
loader.include = path.resolve(projectRoot, '../test/unit')
3950
return true
4051
}
4152
})
53+
{{#if_eq vueVersion '2.x'}}
54+
55+
// apply vue option to apply isparta-loader on js
56+
webpackConfig.module.rules
57+
.find(({ loader }) => loader === 'vue-loader').options.loaders.js = 'isparta-loader'
58+
{{/if_eq}}
4259

4360
module.exports = config => {
4461
config.set({

template/webpack.config.js

Lines changed: 49 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,29 @@ const HtmlWebpackPlugin = require('html-webpack-plugin')
1010

1111
let config = {
1212
devtool: '#eval-source-map',
13-
{{#if eslint}}
13+
{{#if eslint}}{{#if_eq vueVersion '1.x'}}
1414
eslint: {
1515
formatter: require('eslint-friendly-formatter')
1616
},
17-
{{/if}}
17+
{{/if_eq}}{{/if}}
1818
entry: {
1919
build: path.join(__dirname, 'app/src/main.js')
2020
},
2121
module: {
22-
{{#if eslint}}
22+
{{#if eslint}}{{#if_eq vueVersion '1.x'}}
2323
preLoaders: [],
24-
{{/if}}
25-
loaders: [
24+
{{/if_eq}}{{/if}}
25+
{{#if_eq vueVersion '1.x'}}loaders{{else}}rules{{/if_eq}}: [
2626
{
2727
test: /\.css$/,
28+
{{#if_eq vueVersion '1.x'}}
2829
loader: ExtractTextPlugin.extract('style-loader', 'css-loader')
30+
{{else}}
31+
loader: ExtractTextPlugin.extract({
32+
fallbackLoader: 'style-loader',
33+
loader: 'css-loader'
34+
})
35+
{{/if_eq}}
2936
},
3037
{
3138
test: /\.html$/,
@@ -42,7 +49,13 @@ let config = {
4249
},
4350
{
4451
test: /\.vue$/,
45-
loader: 'vue-loader'
52+
loader: 'vue-loader'{{#if_eq vueVersion '2.x'}},
53+
options: {
54+
loaders: {
55+
sass: 'vue-style-loader!css-loader!sass-loader?indentedSyntax=1',
56+
scss: 'vue-style-loader!css-loader!sass-loader'
57+
}
58+
}{{/if_eq}}
4659
},
4760
{
4861
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
@@ -80,13 +93,23 @@ let config = {
8093
'components': path.join(__dirname, 'app/src/components'),
8194
'src': path.join(__dirname, 'app/src')
8295
},
83-
extensions: ['', '.js', '.vue', '.json', '.css'],
96+
extensions: ['.js', '.vue', '.json', '.css'],
97+
{{#if_eq vueVersion '1.x'}}
8498
fallback: [path.join(__dirname, 'app/node_modules')]
99+
{{else}}
100+
modules: [
101+
path.join(__dirname, 'app/node_modules'),
102+
path.join(__dirname, 'node_modules')
103+
]
104+
{{/if_eq}}
85105
},
106+
{{#if_eq vueVersion '1.x'}}
86107
resolveLoader: {
87108
root: path.join(__dirname, 'node_modules')
88109
},
110+
{{/if_eq}}
89111
target: 'electron-renderer',
112+
{{#if_eq vueVersion '1.x'}}
90113
vue: {
91114
{{#if_eq vueVersion '1.x'}}
92115
autoprefixer: {
@@ -98,6 +121,7 @@ let config = {
98121
scss: 'vue-style-loader!css-loader!sass-loader'
99122
}
100123
}
124+
{{/if_eq}}
101125
}
102126

103127
{{#if eslint}}
@@ -106,17 +130,25 @@ if (process.env.NODE_ENV !== 'production') {
106130
* Apply ESLint
107131
*/
108132
if (settings.eslint) {
133+
{{#if_eq vueVersion '1.x'}}
109134
config.module.preLoaders.push(
110135
{
111-
test: /\.js$/,
136+
test: /\.(js|vue)$/,
112137
loader: 'eslint-loader',
113138
exclude: /node_modules/
114-
},
139+
}
140+
)
141+
{{else}}
142+
config.module.rules.push(
115143
{
116-
test: /\.vue$/,
117-
loader: 'eslint-loader'
144+
test: /\.(js|vue)$/,
145+
loader: 'eslint-loader',
146+
enforce: 'pre',
147+
exclude: /node_modules/,
148+
options: { formatter: require('eslint-friendly-formatter') }
118149
}
119150
)
151+
{{/if_eq}}
120152
}
121153
}
122154

@@ -131,7 +163,13 @@ if (process.env.NODE_ENV === 'production') {
131163
new webpack.DefinePlugin({
132164
'process.env.NODE_ENV': '"production"'
133165
}),
166+
{{#if_eq vueVersion '1.x'}}
134167
new webpack.optimize.OccurenceOrderPlugin(),
168+
{{else}}
169+
new webpack.LoaderOptionsPlugin({
170+
minimize: true
171+
}),
172+
{{/if_eq}}
135173
new webpack.optimize.UglifyJsPlugin({
136174
compress: {
137175
warnings: false

0 commit comments

Comments
 (0)