npm link
官方文档祭天
主项目(main-project)
调试的npm包(test-module)
在 main-project
中引入test-module
,如下图:
运行主项目,可想而知会报错:
因为:main-project
的node_modules下面并没有test-module
怎么才能在主项目和调试的npm包之间建立链接呢:
- 将调试的npm包链接到本地全局目录(node_modules)下面
npm link
如下图:
- 在主项目中引用上一步挂到全局的软链接
npm link test-modules
如下图:
主项目node_modules
中的test-module
模块 对应的是 本地的全局node_modules
目录下的软链接
而本地的全局node_modules
目录下的软链接 对应的是 本地的test-module
项目
本地的全局node_modules
目录下的软链接将本地的主项目和test-module
项目链接起来了
重新启动主项目就不会报错了:
npm link 实际上是在调试的npm包和主项目之间进行软链接
注:对于 npm link
方式,由于主项目和test-module
项目属于不同的项目,都有自己各自的 node_modules,如果两个项目都使用了同一个依赖,它们会在各自的 node_modules去查找,如果这个依赖不支持多例,应用就会异常。如果两个项目的编译规则不匹配,也同样会出问题。而且webpack
不会对test-module
项目做预编译,可能会导致实际构建或者运行时会报错等
- 删除引用和删除软链接
npm unlink test-module:删除引用
npm unlink:删除软链接
yalc
官方文档祭天
- yalc publish --private
- yalc add [my-package]
- 在主项目下会生成:
添加了yalc.lock
文件,package.json
对应的包名会有个地址为file:.yalc/
开头的项目。
yalc
将test-module
的包依赖提升至main-project
中,在全局添加test-module
依赖,在main-project
下新建文件拉取依赖,即使有共同的依赖也会从main-project
的 node_modules 去查找。使用 yalc
可以避免上面 npm link
的依赖问题
nodemon
现在还有一个问题,目前写一下代码,需要打一次包, 于是需要自动监听更新文件,可以使用 nodemon
,监视文件的更改并执行对应的命令
更多用法可以查看官方文档
想要解决刚刚提出的问题,可以在test-module
项目中增加命令
"scripts": {
"async": "npm run build && yalc push",
"watch": "nodemon --ignore dist/ --ignore node_modules/ --watch src/ -C -e js,ts,tsx,scss --debug -x npm run async", // 自动监听
}