我正在用Node写一个web应用程序。如果我有一些带有init函数的JS文件,我怎么从命令行调用这个函数呢?


当前回答

更新2020 - CLI

正如@mix3d指出的那样,你可以只运行一个命令,其中file.js是你的文件,someFunction是你的函数,后面有空格分隔的参数

npx run-func file.js someFunction "just some parameter"

就是这样。

在上面的例子中调用File.js

const someFunction = (param) => console.log('Welcome, your param is', param)

// exporting is crucial
module.exports = { someFunction }

更详细的描述

从CLI直接运行(全局)

安装

npm i -g run-func

使用方法,即运行函数“init”,它必须导出,见底部

run-func db.js init

or

从包运行。Json脚本(本地)

安装

npm i -S run-func

设置

"scripts": {
   "init": "run-func db.js init"
}

使用

npm run init

参数个数

以下参数将作为函数参数传入init(param1, param2)

run-func db.js init param1 param2

重要的

函数(在本例中是init)必须在包含它的文件中导出

module.exports = { init };

或ES6导出

export { init };

其他回答

如果你想从你的。env文件中包含环境变量,你可以使用env-cmd:

npx env-cmd node -e 'require("./db").init()'

如果你想在文件中运行一个特定的函数,使用run-func:

npx env-cmd npx run-func db.js init someArg

或者,为已接受的答案提供一个参数,你必须这样做:

npx env-cmd node -e 'require("./db").init(someArg)'

在这里编写/更新表达式比为命令提供不同的参数更不显式(例如,当你回头检查时更容易错过),所以我建议使用env-cmd和run-func。

注意:必要时,我通常还会在后面加上——experimental-modules。

简单的方法:

假设你在项目结构的helpers目录下有一个db.js文件。

现在进入助手目录,进入节点控制台

 helpers $ node

2)需要db.js文件

> var db = require("./db")

3)调用你的函数(在你的情况下是init())

> db.init()

希望这能有所帮助

也许这个方法不是你想要的,但谁知道它会有帮助呢

index.js

const arg = process.argv.splice(2);

function printToCli(text){
    console.log(text)
}

switch(arg[0]){
    case "--run":
        printToCli("how are you")
    break;
    default: console.log("use --run flag");
}

并运行命令node。——运行

命令行

probuss-MacBook-Air:fb_v8 probus$ node . --run
how are you
probuss-MacBook-Air:fb_v8 probus$ 

你可以添加更多的arg[0], arg[1], arg[2]…和更多的

对于节点。——运行-myarg1 -myarg2

你也可以用类似于@LeeGoddard answer的ts-node运行TypeScript。 在我的例子中,我想分别使用app和init进行测试。

// app.ts

export const app = express();

export async function init(): Promise<void> {
   // app init logic...
}
npx ts-node -e 'require("./src/app").init();'
npx ts-node -e 'import("./src/app").then(a => a.init());' // esmodule

更新2020 - CLI

正如@mix3d指出的那样,你可以只运行一个命令,其中file.js是你的文件,someFunction是你的函数,后面有空格分隔的参数

npx run-func file.js someFunction "just some parameter"

就是这样。

在上面的例子中调用File.js

const someFunction = (param) => console.log('Welcome, your param is', param)

// exporting is crucial
module.exports = { someFunction }

更详细的描述

从CLI直接运行(全局)

安装

npm i -g run-func

使用方法,即运行函数“init”,它必须导出,见底部

run-func db.js init

or

从包运行。Json脚本(本地)

安装

npm i -S run-func

设置

"scripts": {
   "init": "run-func db.js init"
}

使用

npm run init

参数个数

以下参数将作为函数参数传入init(param1, param2)

run-func db.js init param1 param2

重要的

函数(在本例中是init)必须在包含它的文件中导出

module.exports = { init };

或ES6导出

export { init };