我正在尝试生成供应商CSS和Javascript,但出了点问题。供应商Css包含在Css和Javascript包中。
这是我的webpack配置:
module.exports = (env) => {
const optimization = {
noEmitOnErrors: true,
splitChunks: {
cacheGroups: {
polyfills: {
name: 'polyfills',
test: /polyfills|core-js|zone/,
chunks: 'initial',
priority: 2,
enforce: true,
},
vendors: {
name: 'vendors',
test: /node_modules/,
chunks: 'all',
priority: 1,
enforce: true,
},
appStyles: {
name: 'app',
test: (m, c, entry = 'app') => m.constructor.name === 'CssModule' && recursiveIssuer(m) === entry,
chunks: 'all',
enforce: true,
},
vendorsStyles: {
name: 'vendors',
test: (m, c, entry = 'vendors') => m.constructor.name === 'CssModule' && recursiveIssuer(m) === entry,
chunks: 'all',
enforce: true,
}
}
},
};
return {
optimization,
devtool: 'source-map',
entry: {
app: helpers.root('/client/src/main.ts'),
vendors: helpers.root('/client/src/vendors.ts'),
polyfills: helpers.root('/client/src/polyfills.ts'),
},
output: {
path: helpers.root('/client-dist'),
filename: '[name].js',
},
resolve: {
extensions: ['.ts', '.js'],
modules: [
helpers.root('/client/src'),
helpers.root('/node_modules'),
],
alias: rxPaths(),
},
module: {
rules: [
{
test: /\.ts$/,
use: ['ts-loader', 'angular2-template-loader'],
include: helpers.root('/client/src'),
},
{
test: /\.html$/,
use: ['html-loader'],
include: helpers.root('/client/src'),
},
{
test: /\.css$/,
use: [
CssExtractPlugin.loader,
'css-loader',
],
include: helpers.root('/node_modules/bootstrap'),
},
{
test: /\.less$/,
use: [
CssExtractPlugin.loader,
'css-loader',
'less-loader',
],
include: helpers.root('/client/src/assets/styles'),
},
],
},
plugins: [
new CleanPlugin(['client-dist'], {root: helpers.root('/')}),
new webpack.LoaderOptionsPlugin({debug: true}),
new webpack.ContextReplacementPlugin(/@angular\/core\/fesm5/, helpers.root('/client/src')),
new webpack.optimize.ModuleConcatenationPlugin(),
new CssExtractPlugin({filename: 'assets/styles/[name].css'}),
new HtmlPlugin({template: helpers.root('/client/src/index.html')}),
],
};
};
这是vendor.ts条目:
import 'bootstrap/dist/css/bootstrap.min.css';
这导致vendor.css包括bootstrap.min.css,但bootstra.min.css也包含在vendors.js中。我该如何分开?
答案 0 :(得分:1)
我想出了我的问题。对于css-loader
,我将modules
设置为true
,这导致将引导程序css添加到JavaScript供应商文件中。
{
test: /\.s?[ac]ss$/,
use: [
MiniCssExtractPlugin.loader,
{
loader: 'css-loader',
options: {
modules: false, // If this is true then I see the issue
camelCase: 'dashes',
minimize: isProduction,
sourceMap: !isProduction,
}
},
{
loader: 'sass-loader',
options: {
sourceMap: !isProduction
}
},
]
}
答案 1 :(得分:0)