Spaces:
Sleeping
Sleeping
module.exports = (api, args, options) => { | |
// respect inline entry | |
if (args.entry && !options.pages) { | |
api.configureWebpack(config => { | |
config.entry = { app: api.resolve(args.entry) } | |
}) | |
} | |
const config = api.resolveChainableWebpackConfig() | |
const targetDir = api.resolve(args.dest || options.outputDir) | |
// respect inline build destination in copy plugin | |
if (args.dest && config.plugins.has('copy')) { | |
config.plugin('copy').tap(pluginArgs => { | |
pluginArgs[0][0].to = targetDir | |
return pluginArgs | |
}) | |
} | |
if (args.modern) { | |
const ModernModePlugin = require('../../webpack/ModernModePlugin') | |
if (!args.modernBuild) { | |
// Inject plugin to extract build stats and write to disk | |
config | |
.plugin('modern-mode-legacy') | |
.use(ModernModePlugin, [{ | |
targetDir, | |
isModernBuild: false, | |
unsafeInline: args['unsafe-inline'] | |
}]) | |
} else { | |
// Inject plugin to read non-modern build stats and inject HTML | |
config | |
.plugin('modern-mode-modern') | |
.use(ModernModePlugin, [{ | |
targetDir, | |
isModernBuild: true, | |
unsafeInline: args['unsafe-inline'], | |
// as we may generate an addition file asset (if `no-unsafe-inline` specified) | |
// we need to provide the correct directory for that file to place in | |
jsDirectory: require('../../util/getAssetPath')(options, 'js') | |
}]) | |
} | |
} | |
return api.resolveWebpackConfig(config) | |
} | |