簡體   English   中英

Web Pack 4中的非JavaScript資產是否需要入口點?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM