如何在安装时直接执行 'npm link'

How to execute 'npm link' directly on install

我有一个内部项目,我想在其中 link 向具有 bin 的文件发出命令。就像期待这个 package.json:

{
  "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 将作为控制台中的命令可用。我什至尝试使用 npmpostinstall 脚本,其中包含 npm link,但后来我遇到了一个循环 ...

有没有办法在 npm install 上一步完成此操作?

你可以试试把你package.json改成这样:

{
  "name": "my-project",
  "script": {
    "cli-name": "./bin/my-executable.js",
    "postinstall": "npm run cli-name"
  },
  "dependencies": {
     "node-red": "^1.0.0"
  }
}

还有 运行:

npm install

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

{
  "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,它会 运行 这两个命令。

npm-link 确实是为了不同的目的。当你执行 npm install 时,你应该已经可以在命令行中使用它了。

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

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

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

npm -g install

https://bretkikehara.wordpress.com/2013/05/02/nodejs-creating-your-first-global-module/

另一个选项(如果您使用的是 linux)是使用 $(npm bin)/<module>(如果未全局安装)。

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

当这个或其他方式可用时,我会在这里更新。

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

尝试npm ln。 npm 文档 npm link 的别名,在 PowerShell 5 上为我工作。

npm-link documentation.

惊讶的是所有其他答案基本上都是错误的。要避免循环,只需:

"preinstall": "npm link"