From 7bad21075ebd123ab7263b429019ca24c8b2d623 Mon Sep 17 00:00:00 2001 From: Vicey Wang Date: Sun, 29 Jul 2018 23:30:23 +0800 Subject: [PATCH 1/3] feat: add filename hashing switch and its default value --- packages/@vue/cli-service/lib/options.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/@vue/cli-service/lib/options.js b/packages/@vue/cli-service/lib/options.js index a8b4d877cd..c628df6e12 100644 --- a/packages/@vue/cli-service/lib/options.js +++ b/packages/@vue/cli-service/lib/options.js @@ -3,6 +3,7 @@ const { createSchema, validate } = require('@vue/cli-shared-utils') const schema = createSchema(joi => joi.object({ baseUrl: joi.string().allow(''), outputDir: joi.string(), + filenameHashing: joi.boolean(), assetsDir: joi.string(), indexPath: joi.string(), runtimeCompiler: joi.boolean(), @@ -53,6 +54,9 @@ exports.defaults = () => ({ // where to output built files outputDir: 'dist', + // whether filename will contain hash part + filenameHashing: true, + // where to put static assets (js/css/img/font/...) assetsDir: '', From 7240fe77a95701f55e3856cbc5654049bea7beb3 Mon Sep 17 00:00:00 2001 From: Vicey Wang Date: Mon, 30 Jul 2018 00:35:52 +0800 Subject: [PATCH 2/3] feat: make filenameHashing switch work --- packages/@vue/cli-service/lib/config/base.js | 20 ++++++++++++++++---- packages/@vue/cli-service/lib/config/css.js | 2 +- packages/@vue/cli-service/lib/config/prod.js | 2 +- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/packages/@vue/cli-service/lib/config/base.js b/packages/@vue/cli-service/lib/config/base.js index 628f1c04d8..bd713cedfa 100644 --- a/packages/@vue/cli-service/lib/config/base.js +++ b/packages/@vue/cli-service/lib/config/base.js @@ -82,7 +82,10 @@ module.exports = (api, options) => { .loader('url-loader') .options({ limit: inlineLimit, - name: getAssetPath(options, `img/[name].[hash:8].[ext]`) + name: getAssetPath( + options, + `img/[name]${options.filenameHashing ? '.[hash:8]' : ''}.[ext]` + ) }) // do not base64-inline SVGs. @@ -93,7 +96,10 @@ module.exports = (api, options) => { .use('file-loader') .loader('file-loader') .options({ - name: getAssetPath(options, `img/[name].[hash:8].[ext]`) + name: getAssetPath( + options, + `img/[name]${options.filenameHashing ? '.[hash:8]' : ''}.[ext]` + ) }) webpackConfig.module @@ -103,7 +109,10 @@ module.exports = (api, options) => { .loader('url-loader') .options({ limit: inlineLimit, - name: getAssetPath(options, `media/[name].[hash:8].[ext]`) + name: getAssetPath( + options, + `media/[name]${options.filenameHashing ? '.[hash:8]' : ''}.[ext]` + ) }) webpackConfig.module @@ -113,7 +122,10 @@ module.exports = (api, options) => { .loader('url-loader') .options({ limit: inlineLimit, - name: getAssetPath(options, `fonts/[name].[hash:8].[ext]`) + name: getAssetPath( + options, + `fonts/[name]${options.filenameHashing ? '.[hash:8]' : ''}.[ext]` + ) }) // Other common pre-processors --------------------------------------------- diff --git a/packages/@vue/cli-service/lib/config/css.js b/packages/@vue/cli-service/lib/config/css.js index f3282b6262..1a5e8393b4 100644 --- a/packages/@vue/cli-service/lib/config/css.js +++ b/packages/@vue/cli-service/lib/config/css.js @@ -25,7 +25,7 @@ module.exports = (api, options) => { const shouldExtract = isProd && extract !== false && !shadowMode const filename = getAssetPath( options, - `css/[name].[contenthash:8].css`, + `css/[name]${options.filenameHashing ? '.[contenthash:8]' : ''}.css`, true /* placeAtRootIfRelative */ ) const extractOptions = Object.assign({ diff --git a/packages/@vue/cli-service/lib/config/prod.js b/packages/@vue/cli-service/lib/config/prod.js index 430620864c..c96e7a6cf3 100644 --- a/packages/@vue/cli-service/lib/config/prod.js +++ b/packages/@vue/cli-service/lib/config/prod.js @@ -5,7 +5,7 @@ module.exports = (api, options) => { const getAssetPath = require('../util/getAssetPath') const filename = getAssetPath( options, - `js/[name]${isLegacyBundle ? `-legacy` : ``}.[chunkhash:8].js` + `js/[name]${isLegacyBundle ? `-legacy` : ``}${options.filenameHashing ? '.[chunkhash:8]' : ''}.js` ) webpackConfig From e6cefc6de87d66c613eadf604cfc2127ed8424af Mon Sep 17 00:00:00 2001 From: Vicey Wang Date: Mon, 30 Jul 2018 00:37:40 +0800 Subject: [PATCH 3/3] fix: typo fix --- packages/@vue/cli-service/lib/Service.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@vue/cli-service/lib/Service.js b/packages/@vue/cli-service/lib/Service.js index da9dd2060f..2cdd0f89bc 100644 --- a/packages/@vue/cli-service/lib/Service.js +++ b/packages/@vue/cli-service/lib/Service.js @@ -297,7 +297,7 @@ module.exports = class Service { resovledFrom = 'inline options' } - // normlaize some options + // normalize some options if (typeof resolved.baseUrl === 'string') { resolved.baseUrl = resolved.baseUrl.replace(/^\.\//, '') }