From afc5aef7c17df545a80227738efec58951560f6c Mon Sep 17 00:00:00 2001 From: Haoqun Jiang Date: Mon, 22 Apr 2019 17:49:33 +0800 Subject: [PATCH 1/3] feat: allow `parallel` option to be an integer closes #3850 --- packages/@vue/cli-plugin-babel/index.js | 2 +- packages/@vue/cli-plugin-typescript/index.js | 2 +- packages/@vue/cli-service/lib/options.js | 5 ++++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/@vue/cli-plugin-babel/index.js b/packages/@vue/cli-plugin-babel/index.js index 55ea4e6c7d..a6ad33f358 100644 --- a/packages/@vue/cli-plugin-babel/index.js +++ b/packages/@vue/cli-plugin-babel/index.js @@ -16,7 +16,7 @@ function genTranspileDepRegex (transpileDependencies) { } module.exports = (api, options) => { - const useThreads = process.env.NODE_ENV === 'production' && options.parallel + const useThreads = process.env.NODE_ENV === 'production' && !!options.parallel const cliServicePath = require('path').dirname(require.resolve('@vue/cli-service')) const transpileDepRegex = genTranspileDepRegex(options.transpileDependencies) diff --git a/packages/@vue/cli-plugin-typescript/index.js b/packages/@vue/cli-plugin-typescript/index.js index ac5115f398..39875a7504 100644 --- a/packages/@vue/cli-plugin-typescript/index.js +++ b/packages/@vue/cli-plugin-typescript/index.js @@ -2,7 +2,7 @@ const path = require('path') module.exports = (api, options) => { const fs = require('fs') - const useThreads = process.env.NODE_ENV === 'production' && options.parallel + const useThreads = process.env.NODE_ENV === 'production' && !!options.parallel api.chainWebpack(config => { config.resolveLoader.modules.prepend(path.join(__dirname, 'node_modules')) diff --git a/packages/@vue/cli-service/lib/options.js b/packages/@vue/cli-service/lib/options.js index b99ed92542..2cf1d51ea8 100644 --- a/packages/@vue/cli-service/lib/options.js +++ b/packages/@vue/cli-service/lib/options.js @@ -10,7 +10,10 @@ const schema = createSchema(joi => joi.object({ runtimeCompiler: joi.boolean(), transpileDependencies: joi.array(), productionSourceMap: joi.boolean(), - parallel: joi.boolean(), + parallel: joi.alternatives().try([ + joi.boolean(), + joi.number().integer() + ]), devServer: joi.object(), pages: joi.object().pattern( /\w+/, From 370264491b2dc507e76058c732bfbca4a80022f2 Mon Sep 17 00:00:00 2001 From: Haoqun Jiang Date: Fri, 26 Apr 2019 10:07:27 +0800 Subject: [PATCH 2/3] fix: fix type definitions --- packages/@vue/cli-service/types/ProjectOptions.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/@vue/cli-service/types/ProjectOptions.d.ts b/packages/@vue/cli-service/types/ProjectOptions.d.ts index fff4c3ce84..88607d2c32 100644 --- a/packages/@vue/cli-service/types/ProjectOptions.d.ts +++ b/packages/@vue/cli-service/types/ProjectOptions.d.ts @@ -38,7 +38,7 @@ export interface ProjectOptions { runtimeCompiler?: boolean; transpileDependencies?: Array; productionSourceMap?: boolean; - parallel?: boolean; + parallel?: boolean | number; devServer?: object; pages?: { [key: string]: PageEntry | PageConfig; From 3b92ea852e0f0748659663f9c6bf42c53222962b Mon Sep 17 00:00:00 2001 From: Haoqun Jiang Date: Fri, 26 Apr 2019 11:39:31 +0800 Subject: [PATCH 3/3] feat: when `parallel` is an integer, also apply it to thread loader --- packages/@vue/cli-plugin-babel/index.js | 6 +++++- packages/@vue/cli-plugin-typescript/index.js | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/@vue/cli-plugin-babel/index.js b/packages/@vue/cli-plugin-babel/index.js index a6ad33f358..ac55104372 100644 --- a/packages/@vue/cli-plugin-babel/index.js +++ b/packages/@vue/cli-plugin-babel/index.js @@ -59,9 +59,13 @@ module.exports = (api, options) => { .end() if (useThreads) { - jsRule + const threadLoaderConfig = jsRule .use('thread-loader') .loader('thread-loader') + + if (typeof options.parallel === 'number') { + threadLoaderConfig.options({ workers: options.parallel }) + } } jsRule diff --git a/packages/@vue/cli-plugin-typescript/index.js b/packages/@vue/cli-plugin-typescript/index.js index 39875a7504..2649564635 100644 --- a/packages/@vue/cli-plugin-typescript/index.js +++ b/packages/@vue/cli-plugin-typescript/index.js @@ -37,7 +37,11 @@ module.exports = (api, options) => { if (useThreads) { addLoader({ - loader: 'thread-loader' + loader: 'thread-loader', + options: + typeof options.parallel === 'number' + ? { workers: options.parallel } + : {} }) }