From 1b91cd587632bcf1d3b12f354d8610032f94599e Mon Sep 17 00:00:00 2001 From: neverland Date: Sun, 15 Nov 2020 12:09:09 +0800 Subject: [PATCH] feat(cli): postcss plugins can be array (#7560) --- packages/vant-cli/src/common/index.ts | 15 +------ .../vant-cli/src/config/postcss.config.ts | 44 ++++++++++++------- 2 files changed, 28 insertions(+), 31 deletions(-) diff --git a/packages/vant-cli/src/common/index.ts b/packages/vant-cli/src/common/index.ts index 8cb091a93..56e09da82 100644 --- a/packages/vant-cli/src/common/index.ts +++ b/packages/vant-cli/src/common/index.ts @@ -7,12 +7,7 @@ import { outputFileSync, } from 'fs-extra'; import merge from 'webpack-merge'; -import { - SRC_DIR, - getVantConfig, - ROOT_WEBPACK_CONFIG_FILE, - ROOT_POSTCSS_CONFIG_FILE, -} from './constant'; +import { SRC_DIR, getVantConfig, ROOT_WEBPACK_CONFIG_FILE } from './constant'; import { WebpackConfig } from './types'; export const EXT_REGEXP = /\.\w+$/; @@ -117,14 +112,6 @@ export function getWebpackConfig(defaultConfig: WebpackConfig): object { return defaultConfig; } -export function getPostcssConfig(): object { - if (existsSync(ROOT_POSTCSS_CONFIG_FILE)) { - return require(ROOT_POSTCSS_CONFIG_FILE); - } - - return {}; -} - export type ModuleEnv = 'esmodule' | 'commonjs'; export type NodeEnv = 'production' | 'development' | 'test'; export type BuildTarget = 'site' | 'package'; diff --git a/packages/vant-cli/src/config/postcss.config.ts b/packages/vant-cli/src/config/postcss.config.ts index 51fbb6c5e..e171a429d 100644 --- a/packages/vant-cli/src/config/postcss.config.ts +++ b/packages/vant-cli/src/config/postcss.config.ts @@ -1,26 +1,36 @@ -import { getPostcssConfig } from '../common'; +import { existsSync } from 'fs-extra'; +import { ROOT_POSTCSS_CONFIG_FILE } from '../common/constant'; -type PostcssConfig = object & { - plugins?: object; +type PostcssConfig = { + plugins?: Record | unknown[]; }; -function mergePostcssConfig(config1: PostcssConfig, config2: PostcssConfig) { - const plugins = { - ...config1.plugins, - ...config2.plugins, - }; +export function getRootPostcssConfig(): PostcssConfig { + if (existsSync(ROOT_POSTCSS_CONFIG_FILE)) { + return require(ROOT_POSTCSS_CONFIG_FILE); + } + return { plugins: [] }; +} + +function getPostcssPlugins(rootConfig: PostcssConfig) { + const plugins = rootConfig.plugins || []; + + if (Array.isArray(plugins)) { + return [require('autoprefixer'), ...plugins]; + } return { - ...config1, - ...config2, - plugins, + autoprefixer: {}, + ...plugins, }; } -const DEFAULT_CONFIG = { - plugins: { - autoprefixer: {}, - }, -}; +function resolvePostcssConfig() { + const rootConfig = getRootPostcssConfig(); + return { + ...rootConfig, + plugins: getPostcssPlugins(rootConfig), + }; +} -module.exports = mergePostcssConfig(DEFAULT_CONFIG, getPostcssConfig()); +module.exports = resolvePostcssConfig();