初始說明:
"幽靈依賴" 本身原因是 依賴中的依賴(的依賴)被項目工程中引用;切換pnpm后,利用軟硬鏈接 + .pnpm 隔絕了這種不正常的使用方式,導致問題出現;
// vue.config.js
// vue-cli3本身有安裝插件,不做package依賴安裝
const TerserPlugin = require('terser-webpack-plugin');
// ,.....
// 去掉debugger console.log
new TerserPlugin({
parallel: 3,
exclude: /node_modules/,
terserOptions: {
compress: {
warnings: false,
drop_console: false,
drop_debugger: true,
pure_funcs: ['console.log']
}
}
}),
解決方式一 配置解決
node-linker=hoisted (.npmrc 添加)
給出官網說明:
image.png
優缺點:
1、沒有將pnpm特性發揮極致
2、原工程幾乎沒有任何調整(僅 .npmrc 添加 配置)
解決方式二 依賴解決
由于本身 “幽靈依賴”存在就是缺少依賴包,根據報錯,添加依賴包即可
優缺點
1、正常的解題思路
2、可能需要加很多的包再里面
3、可能存在添加了依賴也存在的問題(依賴的依賴,使用了不合適的依賴包,這樣需要很大精力去處理)