diff --git a/packages/vant-cli/src/common/index.ts b/packages/vant-cli/src/common/index.ts index a10b3bb4c..573801302 100644 --- a/packages/vant-cli/src/common/index.ts +++ b/packages/vant-cli/src/common/index.ts @@ -6,12 +6,14 @@ import { readFileSync, outputFileSync, } from 'fs-extra'; +import merge from 'webpack-merge'; import { SRC_DIR, getVantConfig, ROOT_WEBPACK_CONFIG_FILE, ROOT_POSTCSS_CONFIG_FILE, } from './constant'; +import { WebpackConfig } from './types'; export const EXT_REGEXP = /\.\w+$/; export const SFC_REGEXP = /\.(vue)$/; @@ -37,9 +39,9 @@ export function getComponents() { const EXCLUDES = ['.DS_Store']; const dirs = readdirSync(SRC_DIR); return dirs - .filter(dir => !EXCLUDES.includes(dir)) - .filter(dir => - ENTRY_EXTS.some(ext => { + .filter((dir) => !EXCLUDES.includes(dir)) + .filter((dir) => + ENTRY_EXTS.some((ext) => { const path = join(SRC_DIR, dir, `index.${ext}`); if (existsSync(path)) { return hasDefaultExport(readFileSync(path, 'utf-8')); @@ -99,18 +101,20 @@ export function normalizePath(path: string): string { return path.replace(/\\/g, '/'); } -export function getWebpackConfig(): object { +export function getWebpackConfig(defaultConfig: WebpackConfig): object { if (existsSync(ROOT_WEBPACK_CONFIG_FILE)) { const config = require(ROOT_WEBPACK_CONFIG_FILE); + // 如果是函数形式,可能并不仅仅是添加额外的处理流程,而是在原有流程上进行修改 + // 比如修改markdown-loader,添加options.enableMetaData if (typeof config === 'function') { - return config(); + return config(defaultConfig); } - return config; + return merge(defaultConfig, config); } - return {}; + return defaultConfig; } export function getPostcssConfig(): object { diff --git a/packages/vant-cli/src/config/webpack.package.ts b/packages/vant-cli/src/config/webpack.package.ts index 752c034bd..58be3545b 100644 --- a/packages/vant-cli/src/config/webpack.package.ts +++ b/packages/vant-cli/src/config/webpack.package.ts @@ -10,9 +10,8 @@ export function getPackageConfig(isMinify: boolean): WebpackConfig { setBuildTarget('package'); - return merge( - baseConfig as any, - { + return getWebpackConfig( + merge(baseConfig as any, { mode: 'production', entry: { [name]: join(ES_DIR, 'index.js'), @@ -39,7 +38,6 @@ export function getPackageConfig(isMinify: boolean): WebpackConfig { optimization: { minimize: isMinify, }, - }, - getWebpackConfig() + }) ); } diff --git a/packages/vant-cli/src/config/webpack.site.dev.ts b/packages/vant-cli/src/config/webpack.site.dev.ts index 805b5c79c..0346e1428 100644 --- a/packages/vant-cli/src/config/webpack.site.dev.ts +++ b/packages/vant-cli/src/config/webpack.site.dev.ts @@ -103,5 +103,5 @@ export function getSiteDevBaseConfig(): WebpackConfig { } export function getSiteDevConfig(): WebpackConfig { - return merge(getSiteDevBaseConfig(), getWebpackConfig()); + return getWebpackConfig(getSiteDevBaseConfig()); } diff --git a/packages/vant-cli/src/config/webpack.site.prd.ts b/packages/vant-cli/src/config/webpack.site.prd.ts index 56ddd21a2..cf368e7be 100644 --- a/packages/vant-cli/src/config/webpack.site.prd.ts +++ b/packages/vant-cli/src/config/webpack.site.prd.ts @@ -10,9 +10,8 @@ const outputDir = get(vantConfig, 'build.site.outputDir', SITE_DIST_DIR); const publicPath = get(vantConfig, 'build.site.publicPath', '/'); export function getSitePrdConfig(): WebpackConfig { - return merge( - getSiteDevBaseConfig(), - { + return getWebpackConfig( + merge(getSiteDevBaseConfig(), { mode: 'production', stats: 'none', performance: { @@ -25,7 +24,6 @@ export function getSitePrdConfig(): WebpackConfig { filename: '[name].[hash:8].js', chunkFilename: 'async_[name].[chunkhash:8].js', }, - }, - getWebpackConfig() + }) ); } diff --git a/packages/vant-cli/yarn.lock b/packages/vant-cli/yarn.lock index 171ff2e85..b6d7e56fd 100644 --- a/packages/vant-cli/yarn.lock +++ b/packages/vant-cli/yarn.lock @@ -1988,8 +1988,8 @@ "@vant/markdown-loader@^2.3.0": version "2.3.0" - resolved "https://registry.yarnpkg.com/@vant/markdown-loader/-/markdown-loader-2.3.0.tgz#ea8ab4d8d41609839b40b817bc3a598cf13f9920" - integrity sha512-efNAnJMQbX3yP0+/zvnlYda+xIATLl+T9BXOB179M8KkS3hKk0b8tYHYVeLmdCLbJFeVd8bVXICILIplOYQJ5A== + resolved "https://registry.npm.taobao.org/@vant/markdown-loader/download/@vant/markdown-loader-2.3.0.tgz#ea8ab4d8d41609839b40b817bc3a598cf13f9920" + integrity sha1-6oq02NQWCYObQLgXvDpZjPE/mSA= dependencies: front-matter "^3.0.2" highlight.js "^9.16.2" @@ -5901,9 +5901,9 @@ he@^1.2.0: integrity sha1-hK5l+n6vsWX922FWauFLrwVmTw8= highlight.js@^9.16.2: - version "9.18.1" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.18.1.tgz#ed21aa001fe6252bb10a3d76d47573c6539fe13c" - integrity sha512-OrVKYz70LHsnCgmbXctv/bfuvntIKDz177h0Co37DQ5jamGZLVmoCVMtjMtNZY3X9DrCcKfklHPNeA0uPZhSJg== + version "9.18.3" + resolved "https://registry.npm.taobao.org/highlight.js/download/highlight.js-9.18.3.tgz#a1a0a2028d5e3149e2380f8a865ee8516703d634" + integrity sha1-oaCiAo1eMUniOA+Khl7oUWcD1jQ= hmac-drbg@^1.0.0: version "1.0.1"