javascriptファイルを実行するカスタムスクリプトをpackage.jsonファイルに追加するにはどうすればよいですか?


176

実行script1するプロジェクトディレクトリでコマンドを実行できるようにしたいnode script1.js

script1.js同じディレクトリ内のファイルです。コマンドはプロジェクトディレクトリに固有である必要があります。つまり、プロジェクトフォルダーを他の人に送信すると、同じコマンドを実行できるようになります。

これまでのところ、私は追加してみました:

"scripts": {
    "script1": "node script1.js"
}

私のpackage.jsonファイルに私が実行しようとするscript1と、次の出力が得られます:

zsh: command not found: script1

上記のスクリプトをプロジェクトフォルダに追加するために必要な手順を知っている人はいますか?

*注:コマンドはbashプロファイルに追加できません(マシン固有のコマンドにはできません)

説明が必要な場合はお知らせください。


3
どのように実行しようとしていますか?「npm run script1」を使用していますか?
niorad

3
を使用してscript1を実行しましたnpm run script1か?
Claudiordgz

@Claudiordgzが正しい、またはSujeetの回答のように、「npm start」と「npm test」は「start」と「test」と呼ばれるスクリプトのショートカットです
mjohnsonengr

1
私の端末script1では、実行する必要のある1ワードのコマンドを入力できる必要がありますnode script1.js
Jake.JS

回答:


260

カスタムスクリプト

npm run-script <custom_script_name>

または

npm run <custom_script_name>

あなたの例では、npm run-script script1またはを実行する必要がありnpm run script1ます。

https://docs.npmjs.com/cli/run-scriptを参照してください

ライフサイクルスクリプト

Nodeでは、実行後など、特定のライフサイクルイベントのカスタムスクリプトを実行することもできますnpm install。これらはここにあります

例えば:

"scripts": {
    "postinstall": "electron-rebuild",
},

これはコマンドのelectron-rebuild後に実行されnpm installます。


1
npm run-script scriptname私のために働いたが、npm run scriptnameしなかった!
blueprintchris

「実行」コマンドを使用せずにカスタムスクリプトを実行する方法を教えてください。Sails.jsはこれを行います-NPMをsails lift必要とするコマンドさえあります。NPM経由でインストールすると、インストール先のシステムに端末スクリプトが追加されますか?そうでない場合、これはどのように作られますか?
ギャルGrünfeld

@GalGrünfeld帆をグローバルにインストールしましたか(npm install -g)?
イヴ・ドーフスマン

私は、SailのWebサイトからグローバルにインストールして(を介して-g)、Sail がbash / cmdletスクリプト(たとえば、sails generate api <api_name>(インストール先のマシンに応じてbash / cmdlet )をインストールすることを知っている限り、いくつか読んでいます。マシン上のこれらのスクリプトにグローバルパスを追加します
GalGrünfeldMay

私のpackage.jsonを介してダウンロードされたnpmパッケージのjsファイルを実行する方法?
Hardik Rana

26

以下を作成しましたが、私のシステムで動作しています。これを試してください:

package.json:

{
  "name": "test app",
  "version": "1.0.0",
  "scripts": {
    "start": "node script1.js"   
  }
}

script1.js:

console.log('testing')

コマンドラインから次のコマンドを実行します。

npm start

追加のユースケース

私の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" 
  }

1
script1.jsファイルを実行するコマンドは、呼び出されるカスタムの1ワードコマンドである必要がありますscript1
Jake.JS

次にに変更"start"script1ます。好きな名前を使用できます。start何を実行するかを明確に定義するために使用します
Sujeet Jaiswal

3
@ sujeet-jaiswalを単にstartからscript1に変更するだけでは機能しません。「start」という単語はnpmで予約されているため、機能します。script1という単語は存在せず、package.jsonで定義されていても認識されません。上記のウェズリースミスの答えは正しい答えです。runを呼び出しに追加するだけです。
PredragStojadinović2017年

18

手順は次のとおりです。

  1. package.jsonに以下を追加します。

    "bin":{
        "script1": "bin/script1.js" 
    }
  2. binプロジェクトディレクトリにフォルダを作成runScript1.jsし、コードを含むファイルを追加します。

    #! /usr/bin/env node
    var shell = require("shelljs");
    shell.exec("node step1script.js");
  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コメントに基づいて受け入れられた回答であるはずです。つまり、単一のコマンドで実行する方法です。
AdamJB

これは、質問に基づく承認された回答である必要があります
Damian

2

スクリプトで、1つのコマンドで2つのコマンドを実行するとします。

"scripts":{
  "start":"any command",
  "singleCommandToRunTwoCommand":"some command here && npm start"
}

次に、ターミナルに行き、そこで実行しますnpm run singleCommandToRunTwoCommand


これは役に立ちますが、OPの質問に直接回答するものではありません。
AdamJB

1
基本的に、私たちはあなた自身で行うよりも、より厳密な道を案内することを目的としています。これは適切な学習方法です。
Soban Arshad

@AdamJB彼はそうします。彼はnpm run <script_name>
Kubadev

@kubadev、私は知識を深めることを意味するのではなく、OPは彼の質問に対する彼自身のコメントに従って、1ワードのコマンドでスクリプトを実行する必要があることを指摘していました:In my terminal I need to be able to type the one word command called script1 which should run node script1.js
AdamJB

1

例:

  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build --prod",
    "build_c": "ng build --prod && del \"../../server/front-end/*.*\" /s /q & xcopy /s dist \"../../server/front-end\"",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },

ご覧のように、スクリプト「build_c」はAngularアプリケーションをビルドしており、ディレクトリからすべての古いファイルを削除してから、最終的に結果のビルドファイルをコピーします。


2
ここについてのいくつかの有用な情報だ&&- stackoverflow.com/questions/39172536/...
Simon_Weaver
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.