從npm 7.0 開始已經支持workspace了(以前大家使用的比較多的是lerna 以及yarn。。。。)
npm 的workspace 使用簡單,而且將依賴統一放到了node_moduels 文件夾中,而且可以減少
我們測試的npm link 問題,是值得嘗試的
參考使用
- 初始npm 項目
npm i -y
- 添加一個項目
npm init -w ./packages/a
簡單代碼
module.exports = {
name:"a",
age:333
}
- 添加另外一個項目
npm init -w ./packages/b
簡單代碼
module.exports = {
name:"b",
age:333
}
- 項目入口使用模塊
需要先安裝下類似lerna 的bootstrap,yarn 的workspace 可以自動處理
const a = require("a")
console.log(a)
- 項目結構
├── index.js
├── node_modules
│ ├── a -> ../packages/a
│ ├── b -> ../packages/b
├── package-lock.json
├── package.json
└── packages
├── a
└── b
- 運行效果
- 添加npm 引用
到一個具體的workspace
npm install shortid -w a
workspace 都添加模塊
npm install uuid --workspaces
- 運行命令
功能上與給workspace添加包類似
npm run test --workspaces // 全部運行
npm run test --workspace=a --workspace=b // 指定workspace
npm run test --workspaces --if-present //異常處理
說明
目前來說npm 的workspace 是一個很不錯的lerna 以及yarn 替換模式,還是很值得使用的,同時也包含了publish 時候版本提升的處理
參考資料
https://docs.npmjs.com/cli/v8/using-npm/workspaces
https://docs.npmjs.com/cli/v8/commands/npm-publish