如何将自定义脚本添加到运行javascript文件的package.json文件中?

Jak*_*.JS 129 javascript node.js run-script package.json

我希望能够script1在将运行的项目目录中执行该命令node script1.js.

script1.js是同一目录中的文件.该命令需要特定于项目目录,这意味着如果我向其他人发送项目文件夹,他们将能够运行相同的命令.

到目前为止,我已尝试添加:

"scripts": {
    "script1": "node script1.js"
}
Run Code Online (Sandbox Code Playgroud)

到我的package.json文件但是当我尝试运行时,script1我得到以下输出:

zsh: command not found: script1
Run Code Online (Sandbox Code Playgroud)

有谁知道将上述脚本添加到项目文件夹所需的步骤?

*注意:该命令无法添加到bash配置文件中(不能是特定于机器的命令)

如果您需要任何澄清,请告诉我.

wes*_*yth 207

自定义脚本

npm run-script <custom_script_name>

要么

npm run <custom_script_name>

在您的示例中,您可能希望运行npm run-script script1npm run script1.

请参阅https://docs.npmjs.com/cli/run-script

生命周期脚本

Node还允许您为某些生命周期事件运行自定义脚本,例如npm install运行后.这些可以在这里找到.

例如:

"scripts": {
    "postinstall": "electron-rebuild",
},
Run Code Online (Sandbox Code Playgroud)

这将electron-rebuildnpm install命令之后运行.


小智 19

我创建了以下内容,它正在我的系统上运行.请试试这个:

的package.json:

{
  "name": "test app",
  "version": "1.0.0",
  "scripts": {
    "start": "node script1.js"   
  }
}
Run Code Online (Sandbox Code Playgroud)

script1.js:

console.log('testing')
Run Code Online (Sandbox Code Playgroud)

从命令行运行以下命令:

npm start
Run Code Online (Sandbox Code Playgroud)

附加用例

我的package.json文件通常有以下脚本,这使我能够查看我的文件的typescript,sass编译和运行服务器.

 "scripts": {
    "start": "concurrently \"sass --watch ./style/sass:./style/css\" \"npm run tsc:w\" \"npm run lite\" ",    
    "tsc": "tsc",
    "tsc:w": "tsc -w", 
    "lite": "lite-server",
    "typings": "typings",
    "postinstall": "typings install" 
  }
Run Code Online (Sandbox Code Playgroud)

  • @ sujeet-jaiswal只是从开始改为script1是行不通的.单词"start"在npm中保留,因此它可以工作.单词script1不是,它将无法被识别,即使它在package.json中定义.上面的wesleysmyth答案是正确的,只需添加运行到调用. (3认同)

Jak*_*.JS 12

步骤如下:

  1. 在package.json中添加:

    "bin":{
        "script1": "bin/script1.js" 
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. bin在项目目录中创建一个文件夹,并runScript1.js使用以下代码添加文件:

    #! /usr/bin/env node
    var shell = require("shelljs");
    shell.exec("node step1script.js");
    
    Run Code Online (Sandbox Code Playgroud)
  3. npm install shelljs在终端运行

  4. npm link在终端运行

  5. 从终端,您现在可以运行script1将运行node script1.js

参考:http://blog.npmjs.org/post/118810260230/building-a-simple-command-line-tool-with-npm

  • 这应该是基于 @Jake.JS 对他的问题的评论所接受的答案,即如何使用单个命令运行它。 (3认同)
  • 这应该是根据问题接受的答案 (2认同)

小智 10

假设我的“package.json”中有这行脚本

"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "export_advertisements": "node export.js advertisements",
    "export_homedata": "node export.js homedata",
    "export_customdata": "node export.js customdata",
    "export_rooms": "node export.js rooms"
  },
Run Code Online (Sandbox Code Playgroud)

现在要运行脚本“export_advertisements”,我只需转到终端并输入

npm run export_advertisements
Run Code Online (Sandbox Code Playgroud)


Sob*_*had 8

让我们在脚本中说你想用一个命令运行 2 个命令:

"scripts":{
  "start":"any command",
  "singleCommandToRunTwoCommand":"some command here && npm start"
}
Run Code Online (Sandbox Code Playgroud)

现在转到您的终端并在那里运行npm run singleCommandToRunTwoCommand