05 - 使用加載器 - Webpack 官方文檔翻譯 Get Started

什么是加載器

加載器本質上也是個 Javascript 模塊,他的功能是將各種資源轉換成易于使用的形式

加載器的特征

  • 加載器可以鏈式調用,最后一個加載器必須返回 Javascript
  • 加載器可以是同步的,也可以是異步的
  • 加載器通過 Node.js 運行,因此可以做操作系統權限下的任何事情
  • 加載器接收參數,英此時可配置的
  • 加載器可以用正在表達式配置
  • 加載器通過 npm 發布和安裝
  • 不僅可以在配置文件中使用加載器,也可以在代碼中直接導入加載器模塊
  • 其他特征

解析

加載器本質上就是個模塊,可以想模塊一樣使用它

命名約定

一般加載器的命名格式為 XXX-loader,其中 XXX 表示要處理的資源類型,比如 json-loader

既可以用完整命名引用加載器 (比如 json-loader),也可以用短名稱引用 (比如 json)

安裝

通過 npm 安裝

$ npm install xxx-loader --save

或者

$ npm install xxx-loader --save-dev

使用方法

有三種方式來使用加載器

  • 在代碼中通過 require 語句直接調用
  • 通過配置文件使用
  • 在命令行中使用

require 方式

  • 使用感嘆號 ! 將加載器和資源分隔開
  • 路徑是相對于當前位置的相對路徑

require("./loader!./dir/file.txt");
// => uses the file "loader.js" in the current directory to transform
//    "file.txt" in the folder "dir".

require("jade!./template.jade");
// => uses the "jade-loader" (that is installed from npm to "node_modules")
//    to transform the file "template.jade"
//    If configuration has some transforms bound to the file, they will still be applied.

require("!style!css!less!bootstrap/less/bootstrap.less");
// => the file "bootstrap.less" in the folder "less" in the "bootstrap"
//    module (that is installed from github to "node_modules") is
//    transformed by the "less-loader". The result is transformed by the
//    "css-loader" and then by the "style-loader".
//    If configuration has some transforms bound to the file, they will not be applied.

配置文件方式

在配置文件中,可以使用正則表達式,讓加載器處理某種類型的所有文件

{
    module: {
        loaders: [
            { test: /\.jade$/, loader: "jade" },
            // => "jade" loader is used for ".jade" files

            { test: /\.css$/, loader: "style!css" },
            // => "style" and "css" loader is used for ".css" files
            
            // Alternative syntax:
            { test: /\.css$/, loaders: ["style", "css"] },
        ]
    }
}

命令行方式

看下面的例子

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

意思是使用 jade 加載器處理 jade 文件,使用 stylecss 加載器處理 .css 文件

參數

可以給加載器傳入參數,格式和 Web 中的查詢字符串相同

require 形式

require("url-loader?mimetype=image/png!./file.png");

配置文件形式

{ test: /\.png$/, loader: "url-loader?mimetype=image/png" }

或者

{
    test: /\.png$/,
    loader: "url-loader",
    query: { mimetype: "image/png" }
}

命令行形式

webpack --module-bind "png=url-loader?mimetype=image/png"
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • GitChat技術雜談 前言 本文較長,為了節省你的閱讀時間,在文前列寫作思路如下: 什么是 webpack,它要...
    蕭玄辭閱讀 12,721評論 7 110
  • 無意中看到zhangwnag大佬分享的webpack教程感覺受益匪淺,特此分享以備自己日后查看,也希望更多的人看到...
    小小字符閱讀 8,239評論 7 35
  • 我是麻麻,這是懷孕3周的時候。 在娘家安胎,自拍一下,記錄自己的樣子心情。 突然想吃烤肉,懷孕那會特別饞,忌口又忌...
    姍姍來遲的豆芽閱讀 208評論 0 0
  • 玻璃心是最要不得的。 很多人對成堆的迫在眉睫的待交材料感到憤懣壓抑、遇到被委屈誤解就失眠、遇到別人聚堆聊天就感覺受...
    風里雨里我等你閱讀 223評論 2 6