UNPKG

qn-lcdp

Version:

青能科技低代码前端

114 lines (96 loc) 3.17 kB
const config = require('./config')() const utils = require('./utils') const core = require('./index') const baseConfig = require('./config/webpack.base.extend') const devConfig = require('./config/webpack.dev.extend') const prodConfig = require('./config/webpack.prod.extend') const proxyFactory = require('./config/proxy.factory') // 获取子应用信息 const packageJson = core.IsInstalled ? require('../../../package.json') : require('../package.json') const apps = packageJson.apps || {} const THEME = process.env.THEME || 'default' let publicPath = utils.join('/', config.publicPath) let outputDir = utils.join(config.outputDir, config.publicPath) let port = config.devServerPort let proxy = null let app = null if (process.env.APP) { const appName = process.env.APP app = apps[appName] publicPath = app.publicPath ? utils.join('/', app.publicPath) : utils.join(publicPath, app.name) outputDir = app.outputDir ? utils.join(outputDir, app.outputDir) : utils.join(outputDir, app.name) port = app.port } else { proxy = proxyFactory(apps) } if (config.devServerProxy) { proxy = Object.assign(proxy || {}, config.devServerProxy) } module.exports = { // 网站访问路径(部署目录) publicPath: utils.urlFormat(publicPath), // 输出目录 outputDir: process.env.BUILD_THEME ? core.BuildThemeDistPath : outputDir, // 放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录 assetsDir: config.assetsDir, // 代码检测提示方式 lintOnSave: config.lintOnSave, // 默认情况下 babel-loader 会忽略所有 node_modules 中的文件。如果你想要通过 Babel 显式转译一个依赖,可以在这个选项中列出来 transpileDependencies: config.transpileDependencies, // 生成环境是否生成SourceMap productionSourceMap: !!config.productionSourceMap, devServer: { // 开发环境服务启动端口号 port: port, // API 代理 proxy: proxy, hot: true, disableHostCheck: true, overlay: { warnings: false, errors: true }, headers: { 'Access-Control-Allow-Origin': '*' } }, chainWebpack: chain => { chain .plugin('html') .tap(args => { args[0].title = packageJson.title return args }) // 公共配置 baseConfig(chain, THEME, app) // 开发环境配置 if (process.env.NODE_ENV !== 'production') { devConfig(chain, THEME, app) } // 生产环境配置 if (process.env.NODE_ENV === 'production') { prodConfig(chain, THEME, app) } // 注入APP名称 if (app) { chain.plugin('define').tap(opt => { if (opt[0] && opt[0]['process.env']) { opt[0]['process.env'].APP = `"${app.name}"` } return opt }) chain.output .library(`${app.name}-[name]`) .filename('assets/js/[name].[hash:8].js') .libraryTarget('umd') .jsonpFunction(`webpackJsonp_${app.name}`) } // 加载用户自定义的chainWebpack if (config.chainWebpack) { config.chainWebpack(chain) } }, configureWebpack: { devtool: 'source-map' } }