feat(cli): support custom webpack config

This commit is contained in:
陈嘉涵
2019-11-22 14:32:27 +08:00
parent 578448d040
commit 287251fa90
5 changed files with 121 additions and 87 deletions
+7 -3
View File
@@ -7,14 +7,18 @@ export const SRC_DIR = join(CWD, 'src');
export const DOCS_DIR = join(CWD, 'docs');
export const CONFIG_FILE = join(CWD, 'components.config.js');
export const PACKAGE_JSON_FILE = join(CWD, 'package.json');
export const WEBPACK_CONFIG_FILE = join(CWD, 'webpack.config.js');
export const DIST_DIR = join(__dirname, '../../dist');
export const CONFIG_DIR = join(__dirname, '../config');
export const PACKAGE_ENTRY_FILE = join(DIST_DIR, 'index.js');
export const MOBILE_CONFIG_FILE = join(DIST_DIR, 'mobile-config.js');
export const DESKTOP_CONFIG_FILE = join(DIST_DIR, 'desktop-config.js');
export const BABEL_CONFIG_FILE = join(CONFIG_DIR, 'babel.config.js');
export const JEST_CONFIG_FILE = join(CONFIG_DIR, 'jest.config.js');
export const BABEL_CONFIG_FILE = join(CONFIG_DIR, 'babel.config.js');
export const POSTCSS_CONFIG_FILE = join(CONFIG_DIR, 'postcss.config.js');
export const JEST_TRANSFORM_FILE = join(CONFIG_DIR, 'jest.transform.js');
export const JEST_FILE_MOCK_FILE = join(CONFIG_DIR, 'jest.file-mock.js');
export const JEST_STYLE_MOCK_FILE = join(CONFIG_DIR, 'jest.style-mock.js');
export const JEST_TRANSFORM_FILE = join(CONFIG_DIR, 'jest.transform.js');
export const POSTCSS_CONFIG_FILE = join(CONFIG_DIR, 'postcss.config.js');
+20 -5
View File
@@ -1,7 +1,7 @@
import fs from 'fs-extra';
import decamelize from 'decamelize';
import { readdirSync, existsSync, lstatSync } from 'fs-extra';
import { join } from 'path';
import { SRC_DIR } from './constant';
import { SRC_DIR, WEBPACK_CONFIG_FILE } from './constant';
export const EXT_REGEXP = /\.\w+$/;
export const SFC_REGEXP = /\.(vue)$/;
@@ -21,16 +21,16 @@ export function replaceExt(path: string, ext: string) {
export function getComponents() {
const EXCLUDES = ['.DS_Store'];
const dirs = fs.readdirSync(SRC_DIR);
const dirs = readdirSync(SRC_DIR);
return dirs
.filter(dir => !EXCLUDES.includes(dir))
.filter(dir =>
ENTRY_EXTS.some(ext => fs.existsSync(join(SRC_DIR, dir, `index.${ext}`)))
ENTRY_EXTS.some(ext => existsSync(join(SRC_DIR, dir, `index.${ext}`)))
);
}
export function isDir(dir: string) {
return fs.lstatSync(dir).isDirectory();
return lstatSync(dir).isDirectory();
}
export function isDemoDir(dir: string) {
@@ -67,4 +67,19 @@ export function pascalize(str: string): string {
);
}
export function getWebpackConfig(): object {
if (existsSync(WEBPACK_CONFIG_FILE)) {
// eslint-disable-next-line
const config = require(WEBPACK_CONFIG_FILE);
if (typeof config === 'function') {
return config();
}
return config;
}
return {};
}
export { decamelize };