Mac环境使用软链 npm link

在开发本地npm包时,经常需要改动东西,但又不知道改动是否正确,这时候大部分人可能会打包一版到项目测试,这显得既不优雅也很繁琐。其实npm官方已经提供了npm link这种软链调试方法。

1. 软链

熟悉linux应该比较清楚,也很好理解,其实就是一个跳转的映射。比如访问a,a存的是b的路径,那访问a的时候实际上是b的路径。


2. 如何创建软链

2.1 先在npm包的路径下执行 npm link,创建一个全局链接。

image (1).png

2.2 在项目包里使用
image.png

这时候就可以在项目里使用本地的npm包了,再也不用修一下打一次包了。

⚠️注意:

  1. npm link packageName,这里的packageName是本地包里的package.json中的name。

  2. 如果执行第一步后执行第二步出现 Command “packageName” not found,可能需要重启一下命令行。


3. 如何解除软链接

3.1 先在项目中解除 npm unlink packageName

3.2 再在npm包中解除 npm unlink


4. 其他

查看所有创建的全局链接名称:

npm ls --global --depth 0

强制解除创建的某个特定全局链接:

sudo npm rm --global packageName


5. 踩坑

5.1 npm包已经link到全局了,但在项目里还是找不到这个路径

Pasted image 20230116141918.png

Pasted image 20230116141929.png

排查过程:找包的路径,应该是先项目内部的node_modules,找不到就会找全局的,如果安装了node管理器例如n, fnm, nvm这种,需要检查link的全局路径版本是否一致。
可以使用:npm root -g 查看当前全局node_modoles路径

Pasted image 20230116142136.png

发现是一致的,然后再排查npm包的package.json中的main, module配置,想起项目中的引入路径配错了,应该为 stdeditmap/lib/stdeditmap.esm 才对。
Pasted image 20230116142550.png

PS:此时应该把两个项目都run起来才能看到改动噢,由于我是使用打包后的产物,所以我还需要使用build(项目不支持ts,所以引用打包后的产物)

猜你喜欢

转载自blog.csdn.net/jexxx/article/details/128703253