Repository URL to install this package:
|
Version:
3.6.2 ▾
|
/* eslint complexity: "OFF" */
/* eslint max-statements: "OFF" */
import options from '../.plugins/params'
import * as plugins from '../.plugins'
import { resolveToRoot } from '../resolveToRoot'
import buildPreferences from '../oneConfig'
import getURLs from './bundlePaths'
function decorateConfig(buildOptions) {
buildOptions.client = buildOptions.bundles.client
buildOptions.server = buildOptions.bundles.server
// log.quick(buildOptions)
// This is either our "server" or "client" bundle.
// Otherwise it must be an additional node bundle.
buildOptions.bundleConfig = buildOptions.isServer
? buildOptions.bundles.server
: buildOptions.isClient
? buildOptions.bundles.client
: {}
getURLs(buildOptions)
}
// https://github.com/tessin/tessin-mini/blob/master/webpack/ManifestPlugin.js#L1
// https://github.com/tessin/tessin-mini/blob/master/webpack/webpack.config.js
function webpackConfigFactory(someBuildOptions) {
const buildOptions = {
// ...buildOptions,
// getConfigFor,
resolveToRoot,
// buildPreferences,
// log,
...buildPreferences,
...options(someBuildOptions),
}
decorateConfig(buildOptions)
const { target, isClient, isDev } = buildOptions
const webpackConfig = {
// Define our entry chunks for our bundle.
entry: {},
// Bundle output configuration.
output: {},
mode: isDev ? 'development' : 'production',
target: isClient ? 'web' : 'node',
node: {},
devtool: 'none',
performance: {},
resolve: {},
externals: [],
plugins: [],
module: {
rules: [],
},
}
// require('fliplog').quick(merged)
Object.keys(plugins).forEach(name => {
const plugin = plugins[name]
if (typeof plugin !== 'function') {
console.warn(name)
return
}
plugin(webpackConfig, buildOptions)
})
const webpackDevServerOptions = {
watch: false,
}
if (isClient && isDev) {
delete webpackDevServerOptions.watch
webpackDevServerOptions.watchOptions = {
aggregateTimeout: 500,
poll: 1000,
}
}
// Apply the configuration middleware.
return webpackConfig
}
export { webpackConfigFactory }