UNPKG

guido

Version:

基于webpack4的一键式开发工具,集成handlebars、雪碧图、SVG Sprite、自定义资源注入等方式

63 lines (52 loc) 1.97 kB
'use strict'; const fs = require('fs'); const paths = require('../config/paths'); const TypeOf = require('../utils/typeof'); const ENV = require('../utils/env'); const mergeWebpackConfig = require('../utils/mergeWebpackConfig'); const filterWebpackConfig = require('../utils/filterWebpackConfig'); const excludeDuplicatePaths = require('../utils/excludeDuplicatePaths'); const createWebpackDevServerConfig = require('./createWebpackDevServerConfig'); function addModules(config) { config = require('../modules/script')(config); config = require('../modules/style')(config); config = require('../modules/images')(config); config = require('../modules/handlebars')(config); config = require('../modules/svg')(config); config = require('../modules/font')(config); config = require('../modules/html')(config); config = require('../modules/plugins')(config); return config; } module.exports = function() { return new Promise((resolve, reject) => { let config; if (ENV.isDev()) { config = require('../config/webpack.config.dev'); config.devServer = createWebpackDevServerConfig(config); } else if (ENV.isTest()) { config = require('../config/webpack.config.test'); } else { config = require('../config/webpack.config.prod'); } let appWebpackConfig = null; if (fs.existsSync(paths.appWebpackConfig)) { appWebpackConfig = require(paths.appWebpackConfig); } if (TypeOf.isObject(appWebpackConfig)) { config = mergeWebpackConfig(config, appWebpackConfig); config = addModules(config); } else if (TypeOf.isFunction(appWebpackConfig)) { config = addModules(config); config = appWebpackConfig(config); } config = filterWebpackConfig(config); config.resolve.modules = excludeDuplicatePaths(config.resolve.modules); config.resolveLoader.modules = excludeDuplicatePaths( config.resolveLoader.modules ); TypeOf.isObject(config) ? resolve(config) : reject(new Error('webpack配置不能为空')); }); };