loader學習小計

resolve

  • 用於匹配 resource 路徑的方法:
  • { test: ... } 匹配特定條件
  • { include: ... } 匹配特定路徑
  • { exclude: ... } 排除特定路徑
  • { and: [...] }必須匹配數組中全部條件
  • { or: [...] } 匹配數組中任意一個條件
  • { not: [...] } 排除匹配數組中全部條件

上述的所謂條件的值能夠是:jquery

  • 字符串:必須以提供的字符串開始,因此是字符串的話,這裏咱們須要提供絕對路徑
  • 正則表達式:調用正則的 test 方法來判斷匹配
  • 函數:(path) => boolean,返回 true 表示匹配
  • 數組:至少包含一個條件的數組
  • 對象:匹配全部屬性值的條件

其餘的配置字段

  • options 給對應的 loader 傳遞一些配置項
  • use 字段能夠是一個數組,也能夠是一個字符串或者表示 loader 的對象

loader執行的順序

  • module.rules中從後往前執行
  • 多個 rule 匹配了同一個模塊文件,這個是沒法保證這些rule的執行順序,固然能夠配置enforce,其有兩個屬性(prepost) 分別對應前置類型或後置類型的loader。
  • 前置 -> 行內 -> 普通 -> 後置的順序執行。行內loader即例如const json = require('json-loader!./file.json')

module.noParse 字段

  • 能夠用於配置哪些模塊文件的內容不須要進行解析。對於一些不須要解析依賴(即無依賴) 的第三方大型類庫等,能夠經過這個字段來配置,以提升總體的構建速度。

使用 noParse 進行忽略的模塊文件中不能使用 import、require、define 等導入機制。正則表達式

module.exports = {
  // ...
  module: {
    noParse: /jquery|lodash/, // 正則表達式

    // 或者使用 function
    noParse(content) {
      return /jquery|lodash/.test(content)
    },
  }
}
相關文章
相關標籤/搜索