如何在安装时直接执行 '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-red
的bin
配置也会被创建。
但是我自己的bin
会被完全忽略。无法在 cmd
中使用 cli-name
。在第二步中也有必要执行 npm link
。然后 cli-name
将作为控制台中的命令可用。我什至尝试使用 npm
的 postinstall
脚本,其中包含 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
这样的新命令
当这个或其他方式可用时,我会在这里更新。
尝试npm ln
。 npm 文档 npm link
的别名,在 PowerShell 5 上为我工作。
惊讶的是所有其他答案基本上都是错误的。要避免循环,只需:
"preinstall": "npm link"
我有一个内部项目,我想在其中 link 向具有 bin
的文件发出命令。就像期待这个 package.json
:
{
"name": "my-project",
"bin": {
"cli-name": "./bin/my-executable.js"
},
"dependencies": {
"node-red": "^1.0.0"
}
}
当执行npm install
时,所有的依赖都会被安装,node-red
的bin
配置也会被创建。
但是我自己的bin
会被完全忽略。无法在 cmd
中使用 cli-name
。在第二步中也有必要执行 npm link
。然后 cli-name
将作为控制台中的命令可用。我什至尝试使用 npm
的 postinstall
脚本,其中包含 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
这样的新命令
当这个或其他方式可用时,我会在这里更新。
尝试npm ln
。 npm 文档 npm link
的别名,在 PowerShell 5 上为我工作。
惊讶的是所有其他答案基本上都是错误的。要避免循环,只需:
"preinstall": "npm link"