Npm 可执行文件名称冲突

Nur*_*yev 6 executable npm

在制作包含可执行文件的包时,如何避免与提供同名可执行文件的其他包发生名称冲突?

我什至做了一个实验:

  1. 在 package.json 中创建了包foo{"bin": {"baz": "./bin/baz"}}
  2. 在 package.json 中创建了 package bar{"bin": {"baz": "./bin/baz"}}
  3. 创建了包quux{"dependencies": {"foo": "../foo", "bar": "../bar"}}
  4. 检查了 quux/node_modules/.bin:它仅包含baz最后安装的软件包(bar)的一个可执行文件,即它覆盖(默默地!)第一个baz可执行文件,这是不可接受的。

有什么解决办法吗?

小智 1

事实上,据我所知,这个问题要严重得多。我tsd安装了一个模块,它有一个名为的依赖项@tsd/typescript,它提供了一个tsc可执行文件。

尽管,@tsd/typescript不是我的包的直接依赖项,但 mynode_modules/.bin/tsc被指向@tsd/typescript而不是typescript.

我想我必须提出一个问题