如何在没有节点的情况下在命令行上执行 javascript

she*_*erf 1 javascript shell scripting

我是脚本的新手,我试图弄清楚是否可以在用 Javascript 编写的命令行上运行脚本,只需键入“./script-name arg1 arg2”。我想使用 Javascript,因为 arg2 是一个 JSON 文件,但如果我需要以这种方式调用脚本,我愿意更改为另一种语言。有任何想法吗?

编辑:我在这里查看了问题但没有一个解决方案像我想要的那样使用“./script-name”运行脚本。

sle*_*man 5

Node.js 尊重 shbang 系列的古老 unix 传统。因此,要使 node.js 脚本像常规可执行程序一样运行,您所需要做的就是将其添加为第一行:

#! /usr/bin/env node
Run Code Online (Sandbox Code Playgroud)

从技术上讲,这不会运行 node,而是运行env命令(在所有 unixen 上都可用),然后找到 node.js 的安装位置并运行它。这允许您的脚本跨多个发行版(ubuntu、redhat 等)和跨不同的 Unix(Linux、MacOS、BSD 等)移植。

然后你只需要让你的脚本可执行:

chmod +x your-script.js
Run Code Online (Sandbox Code Playgroud)

然而,在 Windows 上,它变得有点复杂。但是,npm 具有将脚本转换为正确命令的内置功能,因此您甚至不需要执行以下操作:

./your-script.js
Run Code Online (Sandbox Code Playgroud)

你可以这样做:

your-script
Run Code Online (Sandbox Code Playgroud)

您需要做的就是:

  1. 将 shbang 行添加到您的脚本中。
  2. 如果在 unix 上做这chmod +x件事。
  3. 通过将脚本放入自己的文件夹然后npm init在该文件夹中运行(这将创建一个 package.json 文件),将您的脚本变成一个 npm 项目(如果还不是一个 npm 项目)
  4. 编辑您的 package.json 文件并添加一个bin属性

    "bin" : {
        "your-script" : "./your-script.js"
    }
    
    Run Code Online (Sandbox Code Playgroud)
  5. npm link在目录中运行