当为 entry 使用数组值时,可以提供不同类型的文件,以实现在 JavaScript 中不使用 import
导入样式的应用程序(例如,单页应用之前或出于其他原因)中为 CSS 和 JavaScript(以及其他)文件创建独立的打包文件。
我们来看一个例子。我们有一个 PHP 应用程序,包含两种页面类型:主页 (home) 和账户页 (account)。主页的布局与应用程序的其余部分(账户页)不同,且其 JavaScript 不可共享。我们希望从应用程序文件中为主页输出 home.js
和 home.css
,为账户页输出 account.js
和 account.css
。
home.js
console.log('home page type');
home.scss
// home page individual styles
account.js
console.log('account page type');
account.scss
// account page individual styles
我们将使用 MiniCssExtractPlugin
在 production
模式下处理 CSS,作为最佳实践。
webpack.config.js
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
module.exports = {
mode: process.env.NODE_ENV,
entry: {
home: ['./home.js', './home.scss'],
account: ['./account.js', './account.scss'],
},
output: {
filename: '[name].js',
},
module: {
rules: [
{
test: /\.scss$/,
use: [
// fallback to style-loader in development
process.env.NODE_ENV !== 'production'
? 'style-loader'
: MiniCssExtractPlugin.loader,
'css-loader',
'sass-loader',
],
},
],
},
plugins: [
new MiniCssExtractPlugin({
filename: '[name].css',
}),
],
};
使用上述配置运行 webpack 会将输出到 ./dist
,因为我们没有指定不同的输出路径。./dist
目录现在将包含四个文件: