From 472c5614305e62f93b190dd18afdacf71ba96c96 Mon Sep 17 00:00:00 2001 From: Sid Date: Fri, 17 Nov 2017 03:38:02 +0800 Subject: [PATCH 1/9] [enhancement]Remove useless files and performance enhancement in dev server. (#1072) * replace `id` with `name` in chunk files, Fix #996 * fix typo * remove env in `.babelrc` when not using unit or e2e * remove `webpack.test.conf.js` when not using unit or e2e * remove extra space in `.babelrc` * enable `compress` in devServer by default * remove `webpack.test.conf.js` when not using unit(karma) or e2e --- meta.js | 1 + template/.babelrc | 7 +++---- template/build/webpack.dev.conf.js | 5 +++-- template/config/index.js | 8 ++++---- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/meta.js b/meta.js index 6f7b0f80d8..07d1b18303 100644 --- a/meta.js +++ b/meta.js @@ -105,6 +105,7 @@ module.exports = { ".eslintrc.js": "lint", ".eslintignore": "lint", "config/test.env.js": "unit || e2e", + "build/webpack.test.conf.js": "e2e || (unit && runner === 'karma')", "test/unit/**/*": "unit", "test/unit/index.js": "unit && runner === 'karma'", "test/unit/karma.conf.js": "unit && runner === 'karma'", diff --git a/template/.babelrc b/template/.babelrc index 050e00e28c..953e101125 100644 --- a/template/.babelrc +++ b/template/.babelrc @@ -5,12 +5,11 @@ }], "stage-2" ], - "plugins": ["transform-runtime"], + "plugins": ["transform-runtime"]{{#if_or unit e2e}}, "env": { "test": { "presets": ["env", "stage-2"]{{#if_eq runner "karma"}}, - "plugins": ["istanbul"] - {{/if_eq}} + "plugins": ["istanbul"]{{/if_eq}} } - } + }{{/if_or}} } diff --git a/template/build/webpack.dev.conf.js b/template/build/webpack.dev.conf.js index d344b962b4..813a7b0ccd 100644 --- a/template/build/webpack.dev.conf.js +++ b/template/build/webpack.dev.conf.js @@ -14,12 +14,13 @@ const devWebpackConfig = merge(baseWebpackConfig, { }, // cheap-module-eval-source-map is faster for development devtool: config.dev.devtool, - + // these devServer options should be customized in /config/index.js devServer: { clientLogLevel: 'warning', historyApiFallback: true, hot: true, + compress: true, host: process.env.HOST || config.dev.host, port: process.env.PORT || config.dev.port, open: config.dev.autoOpenBrowser, @@ -37,7 +38,7 @@ const devWebpackConfig = merge(baseWebpackConfig, { plugins: [ new webpack.DefinePlugin({ 'process.env': require('../config/dev.env') - }), + }), new webpack.HotModuleReplacementPlugin(), new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update. new webpack.NoEmitOnErrorsPlugin(), diff --git a/template/config/index.js b/template/config/index.js index cb24cb81bb..964b4112c2 100644 --- a/template/config/index.js +++ b/template/config/index.js @@ -14,7 +14,7 @@ module.exports = { // Various Dev Server settings host: 'localhost', // can be overwritten by process.env.HOST - port: 8080, // can be overwritten by process.env.HOST, if port is in use, a free one will be determined + port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined autoOpenBrowser: false, errorOverlay: true, notifyOnErrors: true, @@ -47,7 +47,7 @@ module.exports = { // just be aware of this issue when enabling this option. cssSourceMap: false, }, - + build: { // Template for index.html index: path.resolve(__dirname, '../dist/index.html'), @@ -64,14 +64,14 @@ module.exports = { productionSourceMap: true, // https://webpack.js.org/configuration/devtool/#production devtool: '#source-map', - + // Gzip off by default as many popular static hosts such as // Surge or Netlify already gzip all static assets for you. // Before setting to `true`, make sure to: // npm install --save-dev compression-webpack-plugin productionGzip: false, productionGzipExtensions: ['js', 'css'], - + // Run the build command with an extra argument to // View the bundle analyzer report after build finishes: // `npm run build --report` From 096fe18314ad95662fb0320d63fe10c1d46b7a59 Mon Sep 17 00:00:00 2001 From: Daywatch <1038999405@qq.com> Date: Fri, 17 Nov 2017 03:38:31 +0800 Subject: [PATCH 2/9] Fix # 1070 When index.html has a positional variable, the error can be printed correctly (#1071) --- template/build/utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/template/build/utils.js b/template/build/utils.js index 27f4bea66e..55c301fe8d 100644 --- a/template/build/utils.js +++ b/template/build/utils.js @@ -87,7 +87,7 @@ exports.createNotifierCallback = function () { } const error = errors[0] - const filename = error.file.split('!').pop() + const filename = error.file && error.file.split('!').pop() notifier.notify({ title: pkg.name, message: severity + ': ' + error.name, From 7defca32cf5349d334bb5b8814cbcc7325525586 Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Thu, 16 Nov 2017 20:39:03 +0100 Subject: [PATCH 3/9] Improved Jest config (#1074) * Fix jest config for Windows * Fix jest config file * Removed unused Jest config --- meta.js | 1 + template/package.json | 30 ++---------------------------- template/test/unit/jest.conf.js | 29 +++++++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 28 deletions(-) create mode 100644 template/test/unit/jest.conf.js diff --git a/meta.js b/meta.js index 07d1b18303..19869a693a 100644 --- a/meta.js +++ b/meta.js @@ -108,6 +108,7 @@ module.exports = { "build/webpack.test.conf.js": "e2e || (unit && runner === 'karma')", "test/unit/**/*": "unit", "test/unit/index.js": "unit && runner === 'karma'", + "test/unit/jest.conf.js": "unit && runner === 'jest'", "test/unit/karma.conf.js": "unit && runner === 'karma'", "test/unit/specs/index.js": "unit && runner === 'karma'", "test/unit/setup.js": "unit && runner === 'jest'", diff --git a/template/package.json b/template/package.json index c91e06c239..7eb3d49163 100644 --- a/template/package.json +++ b/template/package.json @@ -8,7 +8,7 @@ "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js", "start": "npm run dev", {{#if_eq runner "jest"}} - "unit": "jest test/unit/specs --coverage", + "unit": "jest --config test/unit/jest.conf.js --coverage", {{/if_eq}} {{#if_eq runner "karma"}} "unit": "cross-env BABEL_ENV=test karma start test/unit/karma.conf.js --single-run", @@ -68,6 +68,7 @@ {{#if_eq runner "jest"}} "babel-jest": "^21.0.2", "jest": "^21.2.0", + "jest-serializer-vue": "^0.3.0", "vue-jest": "^1.0.2", {{/if_eq}} {{#if_eq runner "karma"}} @@ -112,33 +113,6 @@ "webpack-dev-server": "^2.9.1", "webpack-merge": "^4.1.0" }, - {{#if_eq runner "jest"}} - "jest": { - "moduleFileExtensions": [ - "js", - "json", - "vue" - ], - "moduleNameMapper": { - "^@/(.*)$": "/src/$1" - }, - "transform": { - "^.+\\.js$": "/node_modules/babel-jest", - ".*\\.(vue)$": "/node_modules/vue-jest" - }, - "setupFiles": ["/test/unit/setup"], - "mapCoverage": true, - "coverageDirectory": "/test/unit/coverage", - "collectCoverageFrom" : [ - "src/**/*.{js,vue}", - "!src/main.js", - {{#router}} - "!src/router/index.js", - {{/router}} - "!**/node_modules/**" - ] - }, - {{/if_eq}} "engines": { "node": ">= 4.0.0", "npm": ">= 3.0.0" diff --git a/template/test/unit/jest.conf.js b/template/test/unit/jest.conf.js new file mode 100644 index 0000000000..f591d90240 --- /dev/null +++ b/template/test/unit/jest.conf.js @@ -0,0 +1,29 @@ +const path = require('path') + +module.exports = { + rootDir: path.resolve(__dirname, '../../'), + moduleFileExtensions: [ + 'js', + 'json', + 'vue' + ], + moduleNameMapper: { + '^@/(.*)$': '/src/$1' + }, + transform: { + '^.+\\.js$': '/node_modules/babel-jest', + '.*\\.(vue)$': '/node_modules/vue-jest' + }, + snapshotSerializers: ['/node_modules/jest-serializer-vue'], + setupFiles: ['/test/unit/setup'], + mapCoverage: true, + coverageDirectory: '/test/unit/coverage', + collectCoverageFrom: [ + 'src/**/*.{js,vue}', + '!src/main.js', + {{#router}} + '!src/router/index.js', + {{/router}} + '!**/node_modules/**' + ] +} From b14a70adc208837fd2953a9deeedabab64e40217 Mon Sep 17 00:00:00 2001 From: Thorsten Date: Thu, 16 Nov 2017 22:37:20 +0100 Subject: [PATCH 4/9] make jest ignore the e2e test folder because its likely to contain files matching the jest's filename pattern --- template/test/unit/jest.conf.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/template/test/unit/jest.conf.js b/template/test/unit/jest.conf.js index f591d90240..c524e9d7bd 100644 --- a/template/test/unit/jest.conf.js +++ b/template/test/unit/jest.conf.js @@ -13,7 +13,10 @@ module.exports = { transform: { '^.+\\.js$': '/node_modules/babel-jest', '.*\\.(vue)$': '/node_modules/vue-jest' - }, + },{{#e2e}} + testPathIgnorePatterns: [ + '/test/e2e' + ],{{/e2e}} snapshotSerializers: ['/node_modules/jest-serializer-vue'], setupFiles: ['/test/unit/setup'], mapCoverage: true, From 9f51df915fcddeb4ecbe7901b2862ab0512573bc Mon Sep 17 00:00:00 2001 From: Thorsten Date: Thu, 16 Nov 2017 22:59:33 +0100 Subject: [PATCH 5/9] add missing cacheBusting option --- template/build/vue-loader.conf.js | 1 + 1 file changed, 1 insertion(+) diff --git a/template/build/vue-loader.conf.js b/template/build/vue-loader.conf.js index d2ece8f322..847f7cf2b9 100644 --- a/template/build/vue-loader.conf.js +++ b/template/build/vue-loader.conf.js @@ -13,6 +13,7 @@ module.exports = { extract: isProduction }), cssSourceMap: sourceMapEnabled, + cacheBusting: config.dev.cacheBusting, transformToRequire: { video: 'src', source: 'src', From 9b4d4732b6eeb0b1e273b3ed6ebfe3ad00faefb6 Mon Sep 17 00:00:00 2001 From: Thorsten Date: Thu, 16 Nov 2017 21:23:34 +0100 Subject: [PATCH 6/9] Batman! --- template/.babelrc | 3 ++- template/package.json | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/template/.babelrc b/template/.babelrc index 953e101125..6e0aaac99c 100644 --- a/template/.babelrc +++ b/template/.babelrc @@ -9,7 +9,8 @@ "env": { "test": { "presets": ["env", "stage-2"]{{#if_eq runner "karma"}}, - "plugins": ["istanbul"]{{/if_eq}} + "plugins": ["istanbul"]{{/if_eq}}{{#if_eq runner "jest"}}, + "plugins": ["transform-es2015-modules-commonjs", "dynamic-import-node"]{{/if_eq}} } }{{/if_or}} } diff --git a/template/package.json b/template/package.json index 7eb3d49163..713cb4d576 100644 --- a/template/package.json +++ b/template/package.json @@ -67,6 +67,8 @@ "webpack-bundle-analyzer": "^2.9.0", {{#if_eq runner "jest"}} "babel-jest": "^21.0.2", + "babel-plugin-dynamic-import-node": "^1.2.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.26.0" "jest": "^21.2.0", "jest-serializer-vue": "^0.3.0", "vue-jest": "^1.0.2", From f82de79644e91adf0ed7b310bfc7f606615b0c58 Mon Sep 17 00:00:00 2001 From: Thorsten Date: Thu, 16 Nov 2017 22:54:38 +0100 Subject: [PATCH 7/9] fix missing comma --- template/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/template/package.json b/template/package.json index 713cb4d576..03d1efc5a8 100644 --- a/template/package.json +++ b/template/package.json @@ -68,7 +68,7 @@ {{#if_eq runner "jest"}} "babel-jest": "^21.0.2", "babel-plugin-dynamic-import-node": "^1.2.0", - "babel-plugin-transform-es2015-modules-commonjs": "^6.26.0" + "babel-plugin-transform-es2015-modules-commonjs": "^6.26.0", "jest": "^21.2.0", "jest-serializer-vue": "^0.3.0", "vue-jest": "^1.0.2", From d232576a19a99d6212f16b7f69a709a6c057dc56 Mon Sep 17 00:00:00 2001 From: c0defre4k Date: Mon, 20 Nov 2017 18:25:33 +0100 Subject: [PATCH 8/9] revert #996 chunk names to minify prodution JS (#1086) --- template/build/webpack.prod.conf.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/template/build/webpack.prod.conf.js b/template/build/webpack.prod.conf.js index 64a90771f9..b8df87e647 100644 --- a/template/build/webpack.prod.conf.js +++ b/template/build/webpack.prod.conf.js @@ -26,7 +26,7 @@ const webpackConfig = merge(baseWebpackConfig, { output: { path: config.build.assetsRoot, filename: utils.assetsPath('js/[name].[chunkhash].js'), - chunkFilename: utils.assetsPath('js/[name].[chunkhash].js') + chunkFilename: utils.assetsPath('js/[id].[chunkhash].js') }, plugins: [ // http://vuejs.github.io/vue-loader/en/workflow/production.html From 7ba65e8dae133f1a20f89abc250528f89e1ae716 Mon Sep 17 00:00:00 2001 From: Thorsten Date: Tue, 21 Nov 2017 20:08:12 +0100 Subject: [PATCH 9/9] bump v1.2.4 --- package.json | 2 +- template/config/index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 0fefd01e63..92538abd00 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vue-cli-template-webpack", - "version": "1.2.3", + "version": "1.2.4", "license": "MIT", "description": "A full-featured Webpack setup with hot-reload, lint-on-save, unit testing & css extraction.", "scripts": { diff --git a/template/config/index.js b/template/config/index.js index 964b4112c2..08d4d4d166 100644 --- a/template/config/index.js +++ b/template/config/index.js @@ -1,5 +1,5 @@ 'use strict' -// Template version: 1.2.3 +// Template version: 1.2.4 // see http://vuejs-templates.github.io/webpack for documentation. const path = require('path')