webpack4.0 resolve的使用

webpack在啟動后會從配置的入口模塊觸發(fā)找出所有依賴的模塊,Resolve配置webpack如何尋找模塊對應(yīng)的文件。webpack內(nèi)置JavaScript模塊化語法解析功能,默認(rèn)會采用模塊化標(biāo)準(zhǔn)里約定好的規(guī)則去尋找,但你可以根據(jù)自己的需要修改默認(rèn)的規(guī)則。

1.module

commonjs中,找包的順序是從當(dāng)前的node_modules下開始尋找,找不到會從外層再去尋找,我們可以使用module字段來指定找包的范圍

output: {
    ...
},
resolve: {
  module: [path.resolve('node_module')] //當(dāng)前目錄的node_module, 但不知道是否是我的原因,只要添加這個字段,就報錯,并且需要重裝webpack-dev-server
},

2.alias

引包時,一般找包的package.json中的“main”字段,但有的情況下,你可能并不想使用main引用的文件,比如我們只要使用bootstrap的樣式,import “bootstrap”;

// bootstrap 的package.json
"style": "dist/css/bootstrap.css",
"sass": "scss/bootstrap.scss",
"main": "dist/js/bootstrap",
"repository": {
  "type": "git",
  "url": "git+https://github.com/twbs/bootstrap.git"
},
...

可以看到,默認(rèn)卻引的是js,那么我們只能手動的改寫引用方式

import 'bootstrap\dist\css\bootstrap.min.css';  //能達(dá)到效果,但不優(yōu)雅,而且在每個需要的地方都得這樣寫  

resolve中提供了alias字段,方便我們?yōu)橐粋€路徑起“外號”

resolve: {
    // modules: ["node_module"], //當(dāng)前目錄的node_module
    alias: {
      bootstrap: "bootstrap/dist/css/bootstrap.min.css"  //alias在大型項目中及其有用,你不用管再哼哧哼哧的寫大段的文件路徑,只需一個短短的別名,就可解決路徑問題
    }
  },

3. mainFields

這個字段是指定找到包后,引用package.json的那個字段,它是一個數(shù)組,如果沒有這個字段,那么依次查找,找到后引用,因此上例可以這樣:

resolve: {
    // modules: ["node_module"], //當(dāng)前目錄的node_module
    mainFields: ["style", "main"],    // 因為bootstrap中style指向的才是css文件
    // alias: {
    //   bootstrap: "bootstrap/dist/css/bootstrap.css"
    // }
  },

4. mainFiles

也是一個數(shù)組,指的是入口文件的名字,默認(rèn)為index.js

5. extensions

現(xiàn)在,引入文件的時候,必須帶后綴,但是我們可以配置這個字段來指定默認(rèn)后綴查找順序

extensions: [.js, css, .json]  //如果這樣  import 'index',那么壽縣找‘index.js’,找不到后會找‘index.css’,以此類推
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前端將大型項目分成一個個單獨的模塊,一般封裝好的每個模塊都會實現(xiàn)一個目的明確的完成的功能。如何處理這些模塊以及模塊...
    pixels閱讀 3,509評論 1 14
  • 一、概念 本質(zhì)上,webpack 是一個現(xiàn)代 JavaScript 應(yīng)用程序的靜態(tài)模塊打包器(module bun...
    Timmy小石匠閱讀 2,498評論 0 29
  • 前言:在現(xiàn)實項目中,我們可能很少需要從頭開始去配置一個webpack 項目,特別是webpack4.0發(fā)布以后,零...
    97e7dbf546de閱讀 1,781評論 0 14
  • 初始化項目 進(jìn)入一個文件夾作為項目的根目錄 npm init 新建src, dist目錄,package.json...
    love_program閱讀 1,326評論 0 4
  • 陳雨瑤今天早上起床后,自己準(zhǔn)備了早飯——三明治,從切火腿、面包片到抹番茄醬,全是自己親手做好,吃起來也格外開心,隨...

友情鏈接更多精彩內(nèi)容