[英]Are entry points required for non JavaScript assets in web pack 4?
我成功讓webpack生成非JavaScript文件的唯一方法是包括主要資產的entry
。 問題是,webpack也會基於此資產生成一個.js
文件,這是不必要的。 這是在Webpack配置中使用非JavaScript資產的正確方法嗎?
const path = require('path');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const outputDir = 'build';
const extractStylus = new ExtractTextPlugin('../css/screen.css');
module.exports = {
entry: {
app: './src/js/index.js',
print: './src/js/print.js',
stylus: './src/stylus/screen.styl'
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader'
}
},
{
test: /\.styl$/,
use: extractStylus.extract({
fallback: 'style-loader',
use: ['css-loader', 'stylus-loader']
})
}
]
},
plugins: [extractStylus],
output: {
filename: '[name].bundle.js',
path: path.resolve(__dirname, `${outputDir}/js`)
}
};
有問題的特定行是entry
對象的一部分:
stylus: './src/stylus/screen.styl'
沒有該行,則不會生成任何內容,但是使用該行,會生成預期的.css
以及stylus.bundle.js
文件。
我認為您誤解了webpack配置中entry
屬性的作用:
入口點指示webpack應該使用哪個模塊開始構建其內部依賴關系圖 。 輸入入口點后,webpack將找出入口點所依賴的其他模塊和庫(直接和間接)。
然后處理每個依賴項並將其輸出到稱為捆綁的文件中,我們將在下一節中對其進行詳細討論。
[ 來源 ,重點是我的]
如果不指定entry
,webpack將不知道在哪里查找文件; 即使依賴圖不是定向的(也就是定向的),您也需要將webpack指向該圖的至少一個點。
即使您僅在處理資產,生成JS文件的小問題也是Webpack通常如何使用的結果–作為使用JS編寫的某些應用程序邏輯的資產管理器/編譯器。 因此,從理論上講,如果您需要通過NodeJS樣式require
來使用已編譯的資產,則可以使用生成的stylus.bundle.js
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.