如何使nodejs脚本成为linux中的CLI工具?



我做了一个javascript文件mytool.js,它有一些依赖关系(在package.json中)。

现在我可以执行输入

~/mynodes/mytool $ node mytool

但是如果我更改工作目录,我就不能再使用此命令了,因为以前它是在本地运行的。 我想要实现的是能够只输入:

~$ mytool

(无论我在系统的文件系统中在哪里,并且之前没有输入node)。

我应该手动安装它吗?

如果是,在类 Unix 系统中安装个人 nodejs 脚本的常用位置在哪里?

或者是否有类似 npm 的命令来安装个人脚本系统 宽?

当你在package.json中添加"bin"键时:

"bin": {
"mytool": "mytool.js"
},

然后,您将能够使用npm install -g安装脚本,它将自动添加到应有的位置(安装其他全局安装的 CLI 工具的位置,这些工具应该在您的 PATH 中)。

您可以看到这个简单的项目作为示例:

  • https://github.com/rsp/node-websocket-vs-socket.io

它是作为此答案的示例创建的,但它可以满足您的需求:

  1. 它有一个脚本要运行
  2. 它具有外部依赖项
  3. 它可以在全球范围内安装
  4. 它可以通过单个命令从任何地方运行

请注意,你不需要将脚本发布到 npm 就能安装它 - 尽管你可以这样做,或者你也可以直接从 GitHub 安装项目(包括私有存储库) - 但你也可以安装你在本地目录或压缩包中的模块:

npm install -g module-on-npm
npm install -g user/repo-on-github
npm install -g /your/local/directory
npm install -g /your/local/tarball.tgz

有关更多选项,请参阅:

  • https://docs.npmjs.com/cli/install

还要记住,为了使程序能够从任何地方执行,如果您需要访问相对于代码的自己的文件,则需要使用相对于__dirname__filename的路径。看:

  • https://nodejs.org/api/globals.html#globals_dirname
  1. 在脚本顶部放一个 shebang 行(例如#!/usr/bin/env node)。
  2. 将脚本放在$PATH的目录中
  3. 授予其可执行权限(例如chmod +x /usr/local/bin/example.js)

第一个选项:

您可以通过在文件的第一行:#!/usr/bin/env node,将其复制到/usr/local/bin并使其可执行:sudo chmod +x /usr/local/bin/yourfile.js来全局运行文件,然后您可以使用yourfile.js从所需的位置调用它

第二种选择:

使本地文件可执行并创建一个可执行的 bash 脚本,该脚本调用本地文件并将其放入/usr/local/bin然后全局调用 bashfile。

最新更新