如何在安装

时间:2017-02-21 13:39:33

标签: node.js npm npm-install package.json npm-link

我有一个内部项目,我希望将命令链接到bin的文件。就像期待这个package.json

一样
{
  "name": "my-project",
  "bin": {
    "cli-name": "./bin/my-executable.js"
  },
  "dependencies": {
    "node-red": "^1.0.0"
  }
}

执行npm install时,将安装所有依赖项,并且也会创建bin node-red配置。

但我自己的bin将完全被忽略。在cli-name中无法使用cmd。在第二步中也必须执行npm link。然后cli-name将在控制台中作为命令使用。我甚至尝试使用postinstall npm的{​​{1}}脚本,其中包含npm link,但后来我得到了一个循环......

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

6 个答案:

答案 0 :(得分:1)

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

如果有这种或其他方式,我会在这里更新。

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

答案 1 :(得分:0)

您可以尝试将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

答案 2 :(得分:0)

您可以在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,它将运行两个命令。

答案 3 :(得分:0)

npm-link真的是出于不同的目的。你进行npm安装的那一刻,你应该可以在命令行中使用它。

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

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

答案 4 :(得分:0)

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

npm -g install

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

另一个选项(如果你在linux上)是使用$(npm bin)/<module>,如果它没有全局安装。

答案 5 :(得分:0)

尝试npm ln。 npm文档的npm link的别名在PowerShell 5上对我有用。

npm-link documentation