如何在Windows上的Node.js中创建全局命令

如何在Windows上的Node.js中创建全局命令,windows,node.js,command,command-prompt,Windows,Node.js,Command,Command Prompt,我一直在尝试创建全局命令,这些命令将在Node.js中的windows上的“命令提示符”中运行。不幸的是,所有的教程似乎都是针对Mac/Linux的。这通常不会是一个问题,但是,当我完全遵循它们并使用不同的目录字符串格式和位置时,Node.js无法准确解析链接 我能够让它工作的唯一方法是在运行“npm link”后进入“Windows命令”文件节点并手动调整值。这是可行的,但似乎不是最好的解决方案 我使用的“目录标识符”是: #!!C:\Users \-我的用户名-\AppData\Roamin

我一直在尝试创建全局命令,这些命令将在Node.js中的windows上的“命令提示符”中运行。不幸的是,所有的教程似乎都是针对Mac/Linux的。这通常不会是一个问题,但是,当我完全遵循它们并使用不同的目录字符串格式和位置时,Node.js无法准确解析链接

我能够让它工作的唯一方法是在运行“npm link”后进入“Windows命令”文件节点并手动调整值。这是可行的,但似乎不是最好的解决方案

我使用的“目录标识符”是:

#!!C:\Users \-我的用户名-\AppData\Roaming\npm \“环境节点”

生成的Node.js“Windows命令”(不起作用): 手动调整Node.js“Windows命令”: 我(从生成的命令)获取的错误:
我不知道什么是正确的防弹方法,但这一种在我的开发机器上运行良好:

在文件夹
%APPDATA%\npm
中创建包含以下内容的文件
test.cmd

@node "C:\full\path\to\test.js" %*
在我的Windows版本中,
%APPDATA%
扩展为
C:\Users\my\u user\u name\APPDATA\Roaming
,因此完整的shell脚本名称将是
C:\Users\my\u user\u name\APPDATA\Roaming\npm\test.cmd

@
表示不打印
cmd
脚本在内部执行的操作

%*
表示将提供给
test.cmd
脚本的所有命令行参数作为
process.argv
数组中的值传递给
test.js
脚本


脚本假定节点安装程序将
C:\Program Files\nodejs
C:\Users\my_user\u name\AppData\Roaming
添加到全局环境
PATH
变量中

我将其放在JS文件的顶部:

#!/usr/bin/env node
在.cmd文件中,哪个节点似乎正确地转换为:

"%~dp0\node.exe"

您得到的错误似乎不是来自手动调整的版本。另请参见抱歉造成的混乱。错误来自生成的命令。感谢您的帮助。这不是我想要的解决方案,但同时它也会起作用。我使用的是“@node%~dp0\node\u modules\node Command\Test.js%*”,所以它是当前目录。我还编写了一个node命令来为我自动化这个过程。如果您喜欢源代码,我非常乐意发布。@Alec我也在使用自定义脚本自动生成我的答案中的命令(在安装时),所以生成的脚本的可移植性对我来说不是问题。如果你知道一个能更轻松地解决你的问题的答案,那么一定要把它公布(包括所有有用的细节),如果没有其他人提供更好的答案,就毫不犹豫地接受它
@node "C:\full\path\to\test.js" %*
#!/usr/bin/env node
"%~dp0\node.exe"