node.js - 使用作用域匯入本地 npm 套件
我的單一代碼庫:
/app1
package.json
/app2
package.json
/shared
package.json
shared/package.json 有 "name": "@company/shared"。
應用程式專案的 package.json 檔案具有依賴 "@company/shared": "file:../shared"。
在引用共享代碼時,我希望使用「簡短」風格,這種風格在移動內容時也不容易出錯:
import { foo } from "@company/shared"
但那行不通,所以我必須這麼做:
import { foo } from "../../../../../shared/src/something"
我嘗試修改了 package.json 和 tsconfig.json,但沒有成功。
我該如何設置那個?
答案#1
你應該使用 npm-link 將你的共享套件連結到依賴套件。
cd ~/shared # go into the package directory
npm link # creates global link
cd ~/app1 # go into some other package directory.
npm link @company/shared # link-install the package
這將告訴 npm 從共享資料夾安裝套件,並隨原始套件的任何變更進行更新
更多資訊請參見 https://docs.npmjs.com/cli/link.html
編輯:我直到現在才意識到你打算將共享的套件上傳到伺服器。在那種情況下,你可以使用 module-alias 套件,https://www.npmjs.com/package/module-alias
這將允許你進行像 const sharedModule=require('@shared/moduleName'); 這樣的匯入
編輯 #2:對於 TypeScript,請使用 https://www.npmjs.com/package/tsconfig-paths
答案#2
事實上,我上面的程式碼有一部分遺漏了。
共享專案需要在 index.js 中匯出共享的內容(即「桶」文件),並在 package.json 中引用它:
"main": "dist/index.js",
"types": "dist/index.d.ts",
然後別名匯入方式就能使用了。
