我的webpack配置中有多个入口点用于登录,应用程序,错误页面,我只需要登录和应用程序输出这些条目的js文件,错误只输出样式。目前所有条目都输出样式和脚本,我不太确定如何具体获取输出的内容?
的WebPack
entry: {
'main': [
'babel-polyfill',
'./source/styles/src/imports/main/main.scss',
'./source/app/app.main.js'
],
'login': [
'./source/styles/src/imports/login/login.scss',
'./source/scripts/login.js'
],
'errors': './source/styles/src/imports/errors/errors.scss'
},
output: {
path: path.resolve(__dirname, 'dist'),
filename: './scripts/[name]/[name].min.js',
chunkFilename: './scripts/chunks/[id].[name].min.js'
}
输出
dist/
scripts/
errors/ <---- doesn't need to be here
main/
login/
styles/
errors/
main/
login/
有人可以建议我如何排除错误在脚本中输出吗?
答案 0 :(得分:5)
Webpack为您的条目对象中的每个key
创建单独的文件
条目对象的key
决定要创建的单独文件name
,并且该密钥的value
决定在该文件中包含content
如果您不想创建单独的文件但在其中包含它的内容,则只需在上一个条目中添加此文件的路径
例如
entry: {
main: ['src/js/main.js'],
app: ['src/js/app.js']
}
将创建两个单独的文件1。main.js
和2。app.js
以及各自的内容
和
entry: {
main: ['src/js/main.js', 'src/js/app.js']
}
将创建一个文件main.js
(因为条目对象的键称为main
),其中包含两个文件的内容
和
entry: {
app: ['src/js/main.js', 'src/js/app.js']
}
将同时创建一个文件app.js
(因为条目对象的键称为app
),其中包含两个文件的内容
因此,如果您不想创建单独的错误文件但包含其内容,则不要在entry
对象
然后你的移民就像
entry: {
'main': [
'babel-polyfill',
'./source/styles/src/imports/main/main.scss',
'./source/app/app.main.js',
'./source/styles/src/imports/errors/errors.scss' <--- so that webpack know to include content of that file also
],
'login': [
'./source/styles/src/imports/login/login.scss',
'./source/scripts/login.js'
]
}
还请注意,您需要使用style-loader
或extract-text-webpack-plugin
将css
内容与JavaScript文件分开
要创建独立的errors.css
文件,您需要为常规css文件使用两个不同的extract-text-wepack-plugin
实例,为errors.css文件使用一个实例,并使用include
exclude
属性分开
const extractCSS = new ExtractTextPlugin('main.css');
const extractERRORS = new ExtractTextPlugin('errors.css');
.
.
.
module: {
rules: [
{
test: /\.scss$/,
exclude: /errors/,
use: extractCSS.extract([ 'css-loader', 'sass-loader' ])
},
{
test: /\.scss$/,
include: /errors/,
use: extractERRORS.extract([ 'css-loader', 'sass-loader' ])
},
]
},
plugins: [
extractCSS,
extractERRORS
]
答案 1 :(得分:0)
您可以使用以下Webpack插件:webpack-fix-style-only-entries
它从仅css条目的块中查找js文件,并从编译中删除js文件。
只需添加到您的webpack.config中,就像这样:
// ... other plugins
const FixStyleOnlyEntriesPlugin = require("webpack-fix-style-only-entries");
module.exports = {
// ...
plugins: [
new FixStyleOnlyEntriesPlugin(),
],
};