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
npm run script1?를 사용하여 script1을 실행 했 습니까?
Claudiordgz

@Claudiordgz 오른쪽, 또는 Sujeet의 대답으로, "시작 NPM"와 "고궁 박물원 테스트" "시작"이라는 스크립트에 대한 바로 가기를하고 "테스트"
mjohnsonengr

1
터미널에서 script1실행해야하는 한 단어 명령을 입력 할 수 있어야합니다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를

수명주기 스크립트

또한 노드를 사용하면 after after npm installrun 과 같은 특정 수명주기 이벤트에 대해 사용자 정의 스크립트를 실행할 수 있습니다 . 이것들은 여기 에서 찾을 수 있습니다 .

예를 들면 다음과 같습니다.

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

이것은 명령 electron-rebuild후에 npm install실행됩니다.


1
npm run-script scriptname그러나 나를 위해 일 npm run scriptname하지 않았다!
blueprintchris

"run"명령없이 커스텀 스크립트를 어떻게 실행할 수 있습니까? Sails.js는 그것을 sails lift요구 합니다- 심지어 NPM을 요구 하는 명령 이 있습니다. NPM을 통해 설치하면 설치된 시스템에 터미널 스크립트가 추가됩니까? 그렇지 않다면 어떻게 이루어 집니까?
Gal Grünfeld

@ GalGrünfeld 전 세계적으로 항해를 설치 했습니까 (npm install -g)?
Yves Dorfsman

나는 Sail의 웹 사이트에서 기억할 수있는 한,을 통해 전역으로 설치하고 -g, Sails가 bash / cmdlet 스크립트를 설치한다는 것을 알았습니다 (예 : sails generate api <api_name>(설치하는 기계에 따라 bash / cmdlet) 머신의 스크립트에 대한 글로벌 경로 추가
Gal Grünfeld

내 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파일 을 실행하는 명령은script1
Jake.JS

다음으로 변경 "start"하고 script1원하는 이름을 사용할 수 있습니다. start실행해야 할 항목을 명확하게 정의 하는 데 선호 합니다.
Sujeet Jaiswal

3
@ sujeet-jaiswal은 단순히 시작에서 script1로 변경해도 작동하지 않습니다. "start"라는 단어는 npm에 예약되어 있으므로 작동합니다. script1이라는 단어는 package.json에 정의 된 경우에도 인식되지 않으며 인식되지 않습니다. 위의 wesleysmyth 답변은 올바른 답변입니다. 호출에 실행을 추가하십시오.
Predrag Stojadinović

17

단계는 다음과 같습니다.

  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

스크립트에서 단일 명령으로 2 개의 명령을 실행하려고합니다.

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

이제 터미널로 가서 거기서 실행하십시오 npm run singleCommandToRunTwoCommand.


도움이 되더라도 OP의 질문에 직접 대답하지는 않습니다.
AdamJB

1
기본적으로 우리는 rigth 경로를 안내하기 위해 고안되었습니다. 이것이 올바른 학습 방법입니다.
Soban Arshad

@AdamJB 그는 npm run <script_name>
Kubadev를 사용하여

@kubadev, 나는 pedantic을 의미하지는 않지만 OP는 자신의 질문에 대한 자신의 의견에 따라 한 단어 명령으로 스크립트를 실행해야한다고 지적했습니다.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"스크립트는 앵귤러 애플리케이션을 빌드하고 디렉토리에서 모든 오래된 파일을 삭제 한 다음 결과 빌드 파일을 복사합니다.


2
다음은 유용한 정보입니다. &&- stackoverflow.com
questions
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.