Merge branch 'dev' into next

This commit is contained in:
chenjiahan
2020-09-22 19:42:24 +08:00
20 changed files with 245 additions and 29 deletions

View File

@@ -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)$/;
@@ -100,21 +102,23 @@ export function normalizePath(path: string): string {
return path.replace(/\\/g, '/');
}
export function getWebpackConfig(): object {
export function getWebpackConfig(defaultConfig: WebpackConfig): WebpackConfig {
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 {
export function getPostcssConfig() {
if (existsSync(ROOT_POSTCSS_CONFIG_FILE)) {
return require(ROOT_POSTCSS_CONFIG_FILE);
}

View File

@@ -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()
})
);
}

View File

@@ -103,5 +103,5 @@ export function getSiteDevBaseConfig(): WebpackConfig {
}
export function getSiteDevConfig(): WebpackConfig {
return merge(getSiteDevBaseConfig(), getWebpackConfig());
return getWebpackConfig(getSiteDevBaseConfig());
}

View File

@@ -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()
})
);
}