webpack/test/configCases/css/no-extra-js-exports-output/webpack.config.js

70 lines
1.3 KiB
JavaScript

const path = require("path");
const fs = require("fs");
const webpack = require("../../../../");
const entry = i => {
switch (i) {
case 0:
return {
main: ["./main.css"]
};
case 1:
return {
main: ["./main1.js"]
};
case 2:
return {
main: ["./main2.js"]
};
}
};
/**
* @param {number} i param
* @returns {import("../../../../").Configuration} return
*/
const common = i => ({
entry: {
...entry(i)
},
target: "web",
devtool: false,
experiments: {
css: true
},
output: {
filename: `${i}/[name].js`,
chunkFilename: `${i}/[name].js`,
cssFilename: `${i}/[name].css`,
cssChunkFilename: `${i}/[name].css`
},
plugins: [
{
apply(compiler) {
compiler.hooks.compilation.tap("Test", compilation => {
compilation.hooks.processAssets.tap(
{
name: "copy-webpack-plugin",
stage:
compiler.webpack.Compilation.PROCESS_ASSETS_STAGE_ADDITIONAL
},
() => {
const data = fs.readFileSync(
path.resolve(__dirname, "./test.js")
);
compilation.emitAsset(
"test.js",
new webpack.sources.RawSource(data)
);
}
);
});
}
}
]
});
/** @type {import("../../../../").Configuration[]} */
module.exports = [...[0, 1].map(i => common(i))];