2 回答

TA貢獻1803條經驗 獲得超6個贊

TA貢獻1719條經驗 獲得超6個贊
Lerna 鏈接(或引導程序)將直接在 node_modules 目錄下創建符號鏈接,或者對于具有@-scoped name的包,在具有該名稱的子目錄中創建符號鏈接。假設你的包都在./packages/*,任何直接在下面./node_modules或中的符號鏈接./packages/*/node_modules。例如,在引導之后,lerna 已經創建了幾個符號鏈接到我的創造性命名的@myscope/foo包:
.
├── lerna.json
├── node_modules
│ └── @myscope
│ └── foo -> ../../packages/foo
├── package.json
├── package-lock.json
└── packages
├── bar
│ ├── node_modules
│ │ └── @myscope
│ │ └── foo -> ../../../foo
│ └── package.json
└── foo
└── package.json
我可以用 find 把它們挖出來:
$ find . -type l -and \( -path './node_modules/*' -or -path './packages/*/node_modules/*' \)
./packages/bar/node_modules/@myscope/foo
./node_modules/@myscope/foo
這不是完全有選擇性的,因為它可以找到您使用創建的符號鏈接npm link。
我可以ls -l用來轉儲源和符號鏈接目標(相readlink對于只打印目標):
$ find . -type l -and \( -path './node_modules/*' -or -path './packages/*/node_modules/*' \) -exec ls -l {} \;
lrwxrwxrwx 1 eric eric 12 janv. 4 09:46 ./packages/bar/node_modules/@myscope/foo -> ../../../foo
lrwxrwxrwx 1 eric eric 18 janv. 4 09:45 ./node_modules/@myscope/foo -> ../../packages/foo
如果您對選擇性有信心,則可以 -exec rm {} \;刪除它們。它不如內置的撤消功能好,但至少它可以幫助您了解 lerna 做了什么。
添加回答
舉報