12

我有一个内部项目,我想将命令链接到带有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-namecmd. npm link在第二步中也需要执行。然后cli-name将在控制台中作为命令使用。我什至尝试在其中使用with的postinstall脚本,但后来我得到了一个循环......npmnpm link

有没有办法一步一步做到这一点npm install

4

6 回答 6

3

您可以尝试将您更改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
于 2017-02-21T13:46:56.013 回答
1

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

npm -g install

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

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

于 2017-03-14T02:10:12.327 回答
1

实际上似乎没有内置方法可以自动执行此任务。所以我直接向npm. 似乎npm il可以实现一个新的命令。

当这种或其他方式可用时,我将在此处更新。

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

于 2017-03-14T14:26:48.363 回答
0

npm-link 真的是为了不同的目的。在你执行 npm install 的那一刻,你应该已经可以在命令行中使用它了。

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

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

于 2017-03-13T11:05:21.987 回答
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,它将运行这两个命令。

于 2017-03-07T20:38:37.020 回答
0

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

npm-link 文档

于 2020-05-27T06:52:33.177 回答