使用npm workspace 管理npm 包

从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

posted on   荣锋亮  阅读(4487)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2019-12-15 n8n 试用
2019-12-15 n8n 基于node 的流程自动化工具
2019-12-15 kubectl-trace 基于bpftrace 的kubernetes 集群性能分析工具
2019-12-15 bcc 基于bpf 分析linux 系统性能的强大工具包
2018-12-15 hermes kafka 转http rest api 的broker 工具
2018-12-15 nakadi-ui nakadi event broker 的可视化UI工具
2017-12-15 当前云安全问题&&一些想法

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示