[pnpm實踐問題]ERR_PNPM_INVALID_OVERRIDE_SELECTOR? Cannot parse the "//" selector in the overrides

嘗試運行vue-vben-admin項目出現(xiàn)以下問題

我注意到倉庫新代碼都沒有以下的問題了哦贡羔,作者更新還是很快的。

1.執(zhí)行pnpm install的時候報錯:ERR_PNPM_INVALID_OVERRIDE_SELECTOR? Cannot parse the "http://" selector in the overrides

翻譯:在overrides里面無法解析"http://"
這個問題在issue中能找到忧饭,作者也有回答. 解決辦法如下:

  1. 刪除無法解析的"http://",
  2. pnpm降級到6.23.6(沒試运悲,不想降級)

這是pnpm在讀package.json中的配置時出現(xiàn)的問題,pnpm.overrides或者resolutions存在"http://",我選擇刪掉书斜,因為依賴源選擇好了神妹,在國內應該都有鏡像

pnpm.overrides 和 yarn 提供的resolutions 作用類似:指定依賴版本覆蓋所有依賴及子依賴鞋仍。 (npm可以直接安裝指定版本)
resolutions在遇到某些子依賴高版本有bug的時候造寝,固定所有子依賴的版本有用

package.json
"resolutions": {
   "http://": "Used to install imagemin dependencies, because imagemin may not be installed in China. If it is abroad, you can delete it",
   "bin-wrapper": "npm:bin-wrapper-china",
   "rollup": "^2.56.3",
   "gifsicle": "5.2.0"
 },

pnpm好處:

  1. 全局安裝磕洪,公用依賴,同名包同版本只會下載一次诫龙,提升速度
  2. 項目中只會展示一級依賴析显,不會引入你不知道的子級依賴(npm將依賴拍平以減少重復包的下載)

2.關于npm下載依賴esbuild報錯的問題throw new Error(`esbuild: Failed to install correctly

網(wǎng)上有很多文章解決esbuild安裝問題,就是執(zhí)行node node_modules/esbuild/install.js安裝后签赃,再跑就可以了谷异。

這里我提一點,不要無腦復制粘貼锦聊,要看你的esbuild的報錯路徑

以下我的報錯路徑就是另外一個依賴里面的報錯歹嘹,尷尬了

 at Object.<anonymous> (/Users/ruios/web/vue-vben-admin-main/node_modules/vite-plugin-mock/node_modules/esbuild/bin/esbuild:2:7)

根據(jù)目錄找到文件夾,確實里面里面也有一個esbuild
所以執(zhí)行以下

node node_modules/vite-plugin-mock/node_modules/esbuild/install.js

再次運行就ok了

3. 提示build.terserOptions is specified but build.minify is not set to use Terser. Note Vite now defaults to use esbuild for minification. If you still prefer Terser, set build.minify to "terser".

在vite.config.js中有打包配置terserOptions為了去掉console孔庭,從提示可以看出來尺上,現(xiàn)在Vite默認使用esbuild去作為代碼壓縮器,如果想要使用terserOptions這些配置圆到,要增加minify:terser怎抛。
看文檔默認esbuild壓縮有優(yōu)勢,那也可以刪掉terserOptions

官方文檔.png

minify: 編譯優(yōu)化手段芽淡,指在不影響代碼語義的情況下马绝,盡可能的減小程序的體積,常見的minify工具如terser挣菲、uglify富稻,swc和esbuid也自帶minify功能。

vite.config.js
  build: {
      target: 'es2015',
      outDir: OUTPUT_DIR,
      terserOptions: {
        compress: {
          keep_infinity: true,
          // Used to delete console in production environment
          drop_console: VITE_DROP_CONSOLE,
        },
      },
      // Turning off brotliSize display can slightly reduce packaging time
      brotliSize: false,
      chunkSizeWarningLimit: 2000,
    },

4. vite.config.js中有一個配置optimizeDeps引起了我的興趣

optimizeDeps: {
      // @iconify/iconify: The dependency is dynamically and virtually loaded by @purge-icons/generated, so it needs to be specified explicitly
      include: [
        '@iconify/iconify',
        'ant-design-vue/es/locale/zh_CN',
        'ant-design-vue/es/locale/en_US',
      ],
    },

該配置的目的:

  1. 兼容 CommonJS 和 AMD 模塊的依賴(下圖中needsInterop標志為true就是要重寫CommonJS的導出)
    因為 Vite 的 DevServer 是基于瀏覽器的 Natvie ES Module 實現(xiàn)的己单,所以對于使用的依賴如果是 CommonJS 或 AMD 的模塊唉窃,則需要進行模塊類型的轉化(ES Module)
  2. 減少模塊間依賴引用導致過多的請求次數(shù),加快啟動速度
    預編譯后會將dependencies的依賴和optimizeDeps.include中的依賴進行預編譯緩存,并生成存儲的路徑文件node_moduels/.vite/_metadata.json
    預編譯緩存.png

為了加快二次及后續(xù)編譯速度纹笼,自己寫optimizeDeps比較麻煩纹份,這里到npm上看看用起來吧:vite-plugin-optimize-persist
老實講:vite項目頁面稍微多一丟丟東西,開發(fā)體驗時首次加載頁面真的慢廷痘。不過有了第一次蔓涧,后面還是舒服

5. vite(esbuild + rollup)

關于esbuild的優(yōu)秀,網(wǎng)上有很多構建優(yōu)勢對比圖笋额,甩webpack一條街元暴。

Vite 用 esbuild 替代 Rollup 進行預打包,速度也非承中桑快茉盏,上面的第三點可以看到生產(chǎn)可以用 esbuild 作為壓縮器鉴未。生產(chǎn)打包還是用的Rollup, esbuild 目前對生產(chǎn)包支持不夠健壯鸠姨,很多配置無法通過 esbuild 實現(xiàn)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末铜秆,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子讶迁,更是在濱河造成了極大的恐慌连茧,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,406評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件巍糯,死亡現(xiàn)場離奇詭異啸驯,居然都是意外死亡,警方通過查閱死者的電腦和手機祟峦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評論 3 398
  • 文/潘曉璐 我一進店門罚斗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人搀愧,你說我怎么就攤上這事惰聂。” “怎么了咱筛?”我有些...
    開封第一講書人閱讀 167,815評論 0 360
  • 文/不壞的土叔 我叫張陵搓幌,是天一觀的道長。 經(jīng)常有香客問我迅箩,道長溉愁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,537評論 1 296
  • 正文 為了忘掉前任饲趋,我火速辦了婚禮拐揭,結果婚禮上,老公的妹妹穿的比我還像新娘奕塑。我一直安慰自己堂污,他們只是感情好,可當我...
    茶點故事閱讀 68,536評論 6 397
  • 文/花漫 我一把揭開白布龄砰。 她就那樣靜靜地躺著盟猖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪换棚。 梳的紋絲不亂的頭發(fā)上式镐,一...
    開封第一講書人閱讀 52,184評論 1 308
  • 那天,我揣著相機與錄音固蚤,去河邊找鬼娘汞。 笑死,一個胖子當著我的面吹牛夕玩,可吹牛的內容都是我干的你弦。 我是一名探鬼主播惊豺,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼鳖目!你這毒婦竟也來了扮叨?” 一聲冷哼從身側響起缤弦,我...
    開封第一講書人閱讀 39,668評論 0 276
  • 序言:老撾萬榮一對情侶失蹤领迈,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后碍沐,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體狸捅,經(jīng)...
    沈念sama閱讀 46,212評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,299評論 3 340
  • 正文 我和宋清朗相戀三年累提,在試婚紗的時候發(fā)現(xiàn)自己被綠了尘喝。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,438評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡斋陪,死狀恐怖朽褪,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情无虚,我是刑警寧澤缔赠,帶...
    沈念sama閱讀 36,128評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站友题,受9級特大地震影響嗤堰,放射性物質發(fā)生泄漏。R本人自食惡果不足惜度宦,卻給世界環(huán)境...
    茶點故事閱讀 41,807評論 3 333
  • 文/蒙蒙 一踢匣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧戈抄,春花似錦离唬、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至漾稀,卻和暖如春模闲,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背崭捍。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評論 1 272
  • 我被黑心中介騙來泰國打工尸折, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人殷蛇。 一個月前我還...
    沈念sama閱讀 48,827評論 3 376
  • 正文 我出身青樓实夹,卻偏偏與公主長得像橄浓,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子亮航,可洞房花燭夜當晚...
    茶點故事閱讀 45,446評論 2 359

推薦閱讀更多精彩內容