您的位置:首頁>正文

webpack官網文檔:概念——4.載入器

原文地址:https://webpack.js.org/concepts/loaders/

載入器是應用于你的應用裡原始程式碼, 實現轉換。 它們是函數(運行於Node.js), 用原始檔案作為參數, 生成新檔。

例子

例如, 使用載入器來告訴webpack載入CSS檔, 或者把TypeScript轉換為Javascript。

首先, 安裝對應的載入器:

npm install --save-dev css-loader npm install --save-dev ts-loader

然後, 在webpack.config.js裡進行配置, 對每一個.css檔使用css-loader, 類似的對.ts檔使用ts-loader。

module.exports ={ module:{ rules:[ {test:/.css$/, use: 'css-loader'}, {test:/.ts$/, use: 'ts-loader'} ] } };

注意, 根據配置選項的定義, 下面的方式定義了同樣的載入器用法:

{test:/.css$/, loader:'css-loader'} // or equivalently {test:/.css$/, use:'css-loader'} // or equivalently {test:/.css$/, use:{ loader:'css-loader', options:{} }}

配置

在你的應用裡使用載入器有三種方式:

通過webpack.config.js

module.rules允許你在webpack配置裡指定多個載入器。 這是一個簡潔的顯示載入器的方法, 並且可以幫助你維護整潔的代碼。 它也提供了每一個載入器的整體概述。

module:{ rules:[ { test:/.css$/, use:[ { loader: 'style-loader'}, { loader: 'css-loader', options:{ modules:true } } ] } ] }

通過require

可以通過require聲明來制定載入器(或者define, require.ensuse等等)。 用!(嘆號)分割出載入器, 每一個部分都是相對於目前的目錄被解析。

require('style-loader!css-loader?modules!./styles.css');

規則整體加首碼!(嘆號), 就可以覆蓋在配置裡定義的任何載入器。

選項可以通過查詢參數來傳遞, 就像在互聯網上(?key=value&foo=bar)。 還可以使用json物件(?{"key":"value","foo":"bar"})。

通過CLI

還有一種選擇, 你可以通過CLI使用載入器。

webpack --module-bind jade-loader --module-bind 'css=style-loader!css-loader'

對.jade檔使用jade-loader, 對.css檔使用style-loader和css-loader.

載入器的特性載入器可以鏈式使用, 他們被適用於對應原始程式碼的管道裡。 按照先後順序來編譯一個載入器鏈。 載入器鏈裡第一個載入器返回一個值給下一個載入器。 Webpack期待最後一個載入器返回JavaScript。 載入器可以是同步的, 也可以是非同步的。 載入器運行在Node.js中。 所以Node.js裡可以實現的載入器都可以實現。

載入器接受查詢參數, 這可以被用作想載入器傳遞配置內容。 載入器還可以使用options物件來配置。 標準模組可以通過package.json的loader欄位匯出一個除了標準main之外的載入器。 外掛程式可以給載入器提供更多特性。 載入器可以生成額外的任意檔。

載入器通過預處理函數(載入器)可以在JavaScript生態系統中貢獻更多。 用戶現在可以更靈活的加入諸如壓縮, 大包, 翻譯等細分處理。

解析載入器

載入器依從標準的模組解析。 多數情況下你講從模組路徑(想想npm install, node_modules)裡得到載入器。

怎樣去寫一個載入器?一個載入器模組會輸出一個函數, 並且在Node.js下完成, 相容JavaScript。 通常情況下用npm管理載入器, 但是也可以在你的應用裡以檔形式實現載入器。

按照慣例, 載入器通常被命名為xxx-loader,

xxx是上下文名。 例如, json-loader。

載入器的命名約定和優先查找順序被定義在webpack配置API resolveLoader.moduleTemplates裡。

-- End --

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示