运行npm link后无法删除符号链接

5

我在我的项目中创建了一些可执行文件,并在package.jsonbin属性中定义了这些命令。

"bin": {
   "cmd1": "./scripts/cmd1.js",
   "cmd2": "./scripts/cmd2.js",
}

然后我运行了npm link,符号链接被创建在.nvm/versions/node/v16.13.0/bin中(因为我在使用nvm)。

问题是,在我更新了我的脚本(cmd1.js/cmd2.js)之后,当我运行cmd1cmd2时似乎没有反映出变化。看起来我需要删除.nvm/versions/node/v16.13.0/bin中的可执行文件,然后再次运行npm link。这似乎很麻烦。而且npm unlink根本不起作用,因为它显示“必须提供要删除的软件包名称”,但我并没有取消关联另一个包。

如何解决这个情况?

3个回答

10

1

对我而言最有效的解决方案是按以下顺序输入这些命令:

  1. 观察全局 node_modules 目录的位置:
$ npm root -g
/Users/username/.nvm/versions/node/v18.14.2/lib/node_modules

导航到该目录并观察符号链接的目录以进行移除:
$ cd /Users/username/.nvm/versions/node/v18.14.2/lib/node_modules

$ ls -al

total 0
drwxr-xr-x  10 username  staff  320 28 Mar 08:27 .
drwxr-xr-x   4 username  staff  128 20 Feb 20:05 ..
drwxr-xr-x   2 username  staff   64 28 Mar 08:26 @yolo
drwxr-xr-x   8 username  staff  256 20 Feb 20:05 something
drwxr-xr-x  10 username  staff  320 27 Mar 11:24 eslint
lrwxr-xr-x   1 username  staff   53 27 Mar 12:58 forget-me-soon -> ../../../../../../dev/uniquename/some-test/botched-thing
lrwxr-xr-x   1 username  staff   45 27 Mar 12:30 some-bad-test -> ../../../../../../dev/uniquename/some-bad-test
drwxr-xr-x  12 username  staff  384 20 Feb 20:05 npm
lrwxr-xr-x   1 username  staff   44 15 Mar 11:24 botched-config -> ../../../../../../dev/uniquename/botched-config
lrwxr-xr-x   1 username  staff   45 27 Mar 12:29 steven-segal -> ../../../../../../dev/uniquename/some-bad-test
  1. 删除符号链接
$ rm -rf forget-me-soon
$ rm -rf some-bad-test
$ rm -rf botched-config
$ rm -rf steven-segal

$ ls -al
# nothing bad left
  1. 重新检查npm对已链接模块的认知:
$ npm ls -g --depth=0 --link=true
/Users/username/.nvm/versions/node/v18.14.2/lib
└── (empty)

0
在Windows中,您也可以在此处删除目录:
C:\Users\username\AppData\Roaming\npm\node_modules

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接