bundler-plate
Version:
A CLI generates a boilerplate and config file for webpack/gulp with the most recommended and commonly used configurations.
56 lines (52 loc) • 1.66 kB
JavaScript
const babelLoader = require("./loaders/babelLoader");
const css_sassLoader = require("./loaders/css_sassLoader");
const file_urlLoader = require("./loaders/file_urlLoader");
const plugins = require("./plugins");
/**
*
* @param {boolean} babelInclude
* @param {boolean} cssModules
* @param {boolean} extractCSS
* @param {boolean} sourcemaps
*
*
* @return {string}
*
*/
module.exports = (babelInclude, extractCSS, sourcemaps) => {
return `const path = require("path");
const env = process.env.NODE_ENV;
const HtmlWebpackPlugin = require("html-webpack-plugin");
const autoprefixer = require('autoprefixer');
const { CleanWebpackPlugin } = require('clean-webpack-plugin')
${
extractCSS
? 'const MiniCSSExtractPlugin = require("mini-css-extract-plugin");'
: ""
}
module.exports = {
mode: env === "dev" ? "development" : "production",
entry: {
index: path.resolve(__dirname, "src/index.js"),
// Continue add your multiple entries if any...
},
output: {
filename: env === "dev" ? "assets/js/[name].js" : "assets/js/[name].[contentHash:8].js",
chunkFilename: env === "dev" ? "assets/js/[name].js" : "assets/js/[name].[contentHash:8].js",
path:path.resolve(__dirname, "./dist/")
},
module: {
rules: [
${babelLoader(babelInclude)}${css_sassLoader(
extractCSS
)},${file_urlLoader}
]
},
plugins: ${plugins(extractCSS)},
${
sourcemaps
? "devtool: env === 'dev' ? 'inline-cheap-source-map' : 'source-map'"
: ""
}
};`;
};