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

时间:2017-06-22 13:12:57

标签: javascript node.js unix

我制作了一个javascript文件mytool.js,它有一些依赖项(在package.json中)。

现在我可以在

中执行输入
~/mynodes/mytool $ node mytool

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

~$ mytool

(无论我在系统的文件系统中,无需先输入node)。

  

我应该手动安装吗?

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

  

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

3 个答案:

答案 0 :(得分:2)

当您添加" bin"你的package.json中的密钥:

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

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

您可以将此简单项目视为示例:

它是作为this answer的一个示例创建的,但它可以满足您的需求:

  1. 它有一个要运行的脚本
  2. 它有外部依赖
  3. 可以全局安装
  4. 可以使用单个命令从任何地方运行
  5. 请注意,您不需要将脚本发布到npm以便能够安装它 - 尽管您可以这样做,或者您也可以直接从GitHub安装项目(包括私人回购) - 但您也可以安装您在本地目录或tarball中的模块:

    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
    

    有关更多选项,请参阅:

    另请注意,为了使您的程序能够在任何地方执行,如果您需要访问相对于代码的自己的文件,则需要使用相对于__dirname__filename的路径。参见:

答案 1 :(得分:1)

  1. 在脚本顶部放置一条shebang线(例如#!/usr/bin/env node)。
  2. 将脚本放在$PATH
  3. 的目录中
  4. 授予其可执行权限(例如chmod +x /usr/local/bin/example.js

答案 2 :(得分:1)

第一个选项:

您可以通过放置文件的第一行来全局运行文件:#!/usr/bin/env node,将其复制到/usr/local/bin并使其可执行:sudo chmod +x /usr/local/bin/yourfile.js然后您可以从您想要的地方yourfile.js

第二个选项:

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