UNPKG

@webpack-contrib/defaults

Version:

Project configuration and boilerplate defaults for webpack projects

69 lines (58 loc) 1.54 kB
import path from 'path'; import del from 'del'; import webpack from 'webpack'; import MemoryFS from 'memory-fs'; const modules = (config) => { return { rules: config.rules ? config.rules : config.loader ? [ { test: config.loader.test || /\.js$/, use: { loader: path.resolve(__dirname, '../../src'), options: config.loader.options || {}, }, }, ] : [], }; }; const plugins = (config) => [ new webpack.optimize.CommonsChunkPlugin({ names: ['runtime'], minChunks: Infinity, }), ].concat(config.plugins || []); const output = (config) => { return { path: path.resolve( __dirname, `../outputs/${config.output ? config.output : ''}` ), filename: '[name].js', chunkFilename: '[name].chunk.js', }; }; export default function(fixture, config, options) { config = { devtool: config.devtool || 'sourcemap', context: path.resolve(__dirname, '..', 'fixtures'), entry: `./${fixture}`, output: output(config), module: modules(config), plugins: plugins(config), }; options = Object.assign({ output: false }, options); if (options.output) del.sync(config.output.path); const compiler = webpack(config); if (!options.output) compiler.outputFileSystem = new MemoryFS(); return new Promise((resolve, reject) => compiler.run((err, stats) => { if (err) reject(err); resolve(stats); }) ); }