From f4d10df14d34583da0834ade564888115e214b87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E5=98=89=E6=B6=B5?= Date: Fri, 10 Jan 2020 11:46:30 +0800 Subject: [PATCH] perf(cli): simplify babel cache --- packages/vant-cli/package.json | 1 - packages/vant-cli/preset.js | 2 +- packages/vant-cli/src/commands/build.ts | 6 +-- packages/vant-cli/src/compiler/compile-js.ts | 44 ++------------------ packages/vant-cli/src/config/babel.config.ts | 8 +++- packages/vant-cli/yarn.lock | 10 +---- 6 files changed, 15 insertions(+), 56 deletions(-) diff --git a/packages/vant-cli/package.json b/packages/vant-cli/package.json index 1a805b9ad..098069850 100644 --- a/packages/vant-cli/package.json +++ b/packages/vant-cli/package.json @@ -76,7 +76,6 @@ "cross-env": "^6.0.3", "css-loader": "^3.4.1", "eslint": "^6.8.0", - "find-babel-config": "^1.2.0", "gh-pages": "2.0.1", "html-webpack-plugin": "3.2.0", "husky": "^4.0.4", diff --git a/packages/vant-cli/preset.js b/packages/vant-cli/preset.js index 7db1f0af8..c43ec6d06 100644 --- a/packages/vant-cli/preset.js +++ b/packages/vant-cli/preset.js @@ -1,3 +1,3 @@ const babelConfig = require('./lib/config/babel.config'); -module.exports = () => babelConfig(); +module.exports = api => babelConfig(api); diff --git a/packages/vant-cli/src/commands/build.ts b/packages/vant-cli/src/commands/build.ts index a308d469b..b7ee70ca2 100644 --- a/packages/vant-cli/src/commands/build.ts +++ b/packages/vant-cli/src/commands/build.ts @@ -36,7 +36,7 @@ async function compileFile(filePath: string) { } if (isScript(filePath)) { - return compileJs(filePath, { reloadConfig: true }); + return compileJs(filePath); } if (isStyle(filePath)) { @@ -153,7 +153,7 @@ async function buildPackageEntry() { }); setModuleEnv('esmodule'); - await compileJs(esEntryFile, { reloadConfig: true }); + await compileJs(esEntryFile); genPacakgeStyle({ outputPath: styleEntryFile, @@ -162,7 +162,7 @@ async function buildPackageEntry() { setModuleEnv('commonjs'); await copy(esEntryFile, libEntryFile); - await compileJs(libEntryFile, { reloadConfig: true }); + await compileJs(libEntryFile); await compileStyle(styleEntryFile); stepper.success('Build Package Entry'); diff --git a/packages/vant-cli/src/compiler/compile-js.ts b/packages/vant-cli/src/compiler/compile-js.ts index 0b7a9f1d5..e8525b368 100644 --- a/packages/vant-cli/src/compiler/compile-js.ts +++ b/packages/vant-cli/src/compiler/compile-js.ts @@ -1,49 +1,11 @@ // @ts-ignore -import findBabelConfig from 'find-babel-config'; -import { join } from 'path'; import { transformFileAsync } from '@babel/core'; -import { removeSync, outputFileSync, existsSync } from 'fs-extra'; +import { removeSync, outputFileSync } from 'fs-extra'; import { replaceExt } from '../common'; -import { ROOT, DIST_DIR } from '../common/constant'; -type Options = { - // whether to fouce reload babel config - reloadConfig?: boolean; -}; - -const TEMP_BABEL_CONFIG = join(DIST_DIR, 'babel.config.js'); - -function genTempBabelConfig() { - const { config } = findBabelConfig.sync(ROOT); - const content = `module.exports = function (api) { - api.cache.never(); - - return ${JSON.stringify(config)} -};`; - - outputFileSync(TEMP_BABEL_CONFIG, content); -} - -function getBabelOptions(options: Options) { - if (options.reloadConfig) { - if (!existsSync(TEMP_BABEL_CONFIG)) { - genTempBabelConfig(); - } - - return { - configFile: TEMP_BABEL_CONFIG - }; - } - - return {}; -} - -export function compileJs( - filePath: string, - options: Options = {} -): Promise { +export function compileJs(filePath: string): Promise { return new Promise((resolve, reject) => { - transformFileAsync(filePath, getBabelOptions(options)) + transformFileAsync(filePath) .then(result => { if (result) { const jsFilePath = replaceExt(filePath, '.js'); diff --git a/packages/vant-cli/src/config/babel.config.ts b/packages/vant-cli/src/config/babel.config.ts index 61ba8935e..4f887d748 100644 --- a/packages/vant-cli/src/config/babel.config.ts +++ b/packages/vant-cli/src/config/babel.config.ts @@ -1,4 +1,10 @@ -module.exports = function() { +import { ConfigAPI } from '@babel/core'; + +module.exports = function(api?: ConfigAPI) { + if (api) { + api.cache.never(); + } + const { BABEL_MODULE, NODE_ENV } = process.env; const isTest = NODE_ENV === 'test'; const useESModules = BABEL_MODULE !== 'commonjs' && !isTest; diff --git a/packages/vant-cli/yarn.lock b/packages/vant-cli/yarn.lock index fed69755e..daf3dff22 100644 --- a/packages/vant-cli/yarn.lock +++ b/packages/vant-cli/yarn.lock @@ -4921,14 +4921,6 @@ finalhandler@~1.1.2: statuses "~1.5.0" unpipe "~1.0.0" -find-babel-config@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/find-babel-config/-/find-babel-config-1.2.0.tgz#a9b7b317eb5b9860cda9d54740a8c8337a2283a2" - integrity sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA== - dependencies: - json5 "^0.5.1" - path-exists "^3.0.0" - find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: version "2.1.0" resolved "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-2.1.0.tgz?cache=0&sync_timestamp=1573277814677&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffind-cache-dir%2Fdownload%2Ffind-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" @@ -6937,7 +6929,7 @@ json5@2.x, json5@^2.1.0: dependencies: minimist "^1.2.0" -json5@^0.5.0, json5@^0.5.1: +json5@^0.5.0: version "0.5.1" resolved "https://registry.npm.taobao.org/json5/download/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=