UNPKG

@fxext/cli

Version:

fanxing miniapp cli

62 lines (57 loc) 1.97 kB
const yargs = require('yargs'); const path = require('path'); const config = require('./config'); const plugins = require('./plugins'); const rules = require('./rules'); const { getJsEntry } = require('../utils'); let PAGE_NAME = yargs.argv.page || ''; if (PAGE_NAME.includes(',')) { PAGE_NAME = `*(${PAGE_NAME.replace(/,/g, '|')})`; } const createWebpackConfig = (builder, baseConfig) => { const buildConfig = builder.buildConfig; const webpackConfig = []; for (const entryItem of buildConfig) { const { layoutType, framework } = entryItem; if (framework !== 'cocos') { webpackConfig.push({ ...baseConfig, entry: getJsEntry(`/*(${layoutType})/app/*.js`, path.join(process.cwd(), '/')), module: { rules: rules(config, builder, entryItem), }, plugins: plugins(config, builder, entryItem), }) } } return webpackConfig; } module.exports = (projectConfig, mode = 'development') => { const { builder } = projectConfig; config.isProduction = mode === 'production'; config.sdkVersion = builder.sdkVersion; const baseConfig = { mode, output: { path: config.isProduction ? config.path.pub : config.path.dev, filename: `${config.chunkhashName}.js`, chunkFilename: `${config.chunkhashName}.js`, publicPath: '/', }, watch: !config.isProduction, resolve: { modules: [path.join(process.cwd(), 'node_modules'), path.join(__dirname, '../../node_modules')], extensions: ['.js', '.jsx', '.css', '.scss', '.png', '.jpg', '.jpeg', '.ico', '.svg', '.vue', '.json'], alias: config.alias, }, resolveLoader: { modules: ['node_modules', path.join(__dirname, '../../node_modules')], }, optimization: { noEmitOnErrors: true }, devtool: config.isProduction ? config.sourceMap.production : config.sourceMap.development, stats: 'errors-only' }; return createWebpackConfig(builder, baseConfig); };