关于node.js:如何在安装时直接执行’npm link’

How to execute 'npm link' directly on install

我有一个内部项目,我想在其中使用bin将命令链接到文件。 像这样package.json

1
2
3
4
5
6
7
8
9
{
 "name":"my-project",
 "bin": {
   "cli-name":"./bin/my-executable.js"
  },
 "dependencies": {
   "node-red":"^1.0.0"
  }
}

执行npm install时,将安装所有依赖项,并且还将创建node-redbin配置。

但是我自己的bin将被完全忽略。 在cmd中不能使用cli-name。 在第二步中也必须执行npm link。 然后cli-name将在控制台中作为命令提供。 我什至尝试使用npmnpm linkpostinstall脚本,但是随后出现了循环...

是否可以在npm install上一步完成此操作?


实际上似乎没有内置方法可以自动执行此任务。因此,我已经直接向npm创建了对此功能的请求。似乎可以实现像npm il这样的新命令。

如果有其他可用方式,我将在这里更新。

https://github.com/npm/npm/issues/15999


您可以尝试将package.json更改为以下内容:

1
2
3
4
5
6
7
8
9
10
{
 "name":"my-project",
 "script": {
   "cli-name":"./bin/my-executable.js",
   "postinstall":"npm run cli-name"
  },
 "dependencies": {
    "node-red":"^1.0.0"
  }
}

并运行:

1
npm install


为了运行global二进制(bin)模块,您需要全局安装它。

npm -g install

NodeJS: Creating your first global module

另一个选择(如果您使用的是Linux)是如果未全局安装$(npm bin)/


npm-link确实有不同的用途。完成npm安装后,您应该已经可以在命令行中使用它了。

npm链接用于将当前的开发文件夹链接到软件包的安装目录。这样一来,当您在开发文件夹中进行更改时,它会自动在cli上可用,而无需重新安装。

安装后,尝试转到usr / local / bin <-这应该在这里。如果您在这里找不到my-executable.js。然后在安装过程中出现了问题。


您可以在package.json中创建一个脚本,以在一个命令中完成两个任务,如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
{
 "name":"my-project",
 "bin": {
   "cli-name":"./bin/my-executable.js"
  },
 "scripts": {
   "install-link":"npm install && npm link my-project"
  },
 "dependencies": {
   "node-red":"^1.0.0"
  }
}

然后只需运行npm run install-link,它将同时运行两个命令。