어떻게 npm 를 구축 도구 로 사용 합 니까?

6664 단어
npmscripts 명령 은 다른 구축 도구 에 사용 되 는 모든 일 을 할 수 있 고 더욱 간단명료 하고 우아 하 며 가방 의존 도가 적 고 유지 비용 이 적다.
npm Script
우선, 나 는 npm 우리 의 구축 스 크 립 트 를 어떻게 관리 하 는 지 말 해 야 한다.npm 의 구축 스 크 립 트 는 npm run-script 이 명령 npm run 이 약자 임 을 알 고 있 습 니 다. npm run 의 첫 번 째 매개 변 수 는 scripts 대상 의 속성 과 연 결 됩 니 다. 이 속성의 값 을 하나의 명령 으로 운영 체제 의 기본 shell 에서 실 행 됩 니 다.예 를 들 어 아래 의 이것 package.json:
{
  "name": "myproject",
  "devDependencies": {
    "jshint": "latest",
    "browserify": "latest",
    "mocha": "latest"
  },
  "scripts": {
    "lint": "jshint **.js",
    "test": "mocha test/"
  }
}

실행 npm run lint 하면 npm 하나 shell 를 켜 고 실행 jshint **.js 하 며, 실행 npm run test 하면 npm 하나 shell 를 켜 고 실행 mocha test/ 한다.이 shell 환경 은 node_modules/.bin 폴 더 를 PATH 에 추가 했다. 이것 은 당신 이 설치 한 모든 의존 이 직접 실 행 될 수 있다 는 것 을 의미한다. 다시 말 하면 ./node_modules/.bin/jshint **.js$(npm bin)/jshint **.js 처럼 경 로 를 지정 할 필요 가 없다.
만약 당신 이 실행 npm run 할 때 어떠한 인자 도 쓰 지 않 았 다 면 npm 은 이미 있 는 모든 명령 을 열거 할 것 입 니 다. 예 를 들 어:
Available scripts in the user-service package:
  lint
     jshint **.js
  test
    mocha test/

Shortcut script
편리 하 게 사용 하기 위해 npm 도 명령 의 빠 른 사용 방식 을 제공 했다.예 를 들 어 npm test, npm start, npm stop 명령 등 은 절약 할 수 있다 run.
Pre and Post Hooks
다른 멋 진 특성 은 어떤 npmscript 도 여러 개 pre-post- 갈 고 리 를 설치 할 수 있다 는 것 이다.예 를 들 어 npm run lint 임 무 를 수행 하면 npm 임무 가 무엇 인지 미리 모 르 지만 lint 즉시 실행 npm run prelint 한 다음 에 npm run lint 을 집행 하고 마지막 에 npm run postlint 을 집행 한다.prepost script 도 exit-code-sensitive 입 니 다. 이 는 pretest script 이 0 이 아 닌 종료 코드 로 종료 되면 NPM 즉시 중단 되 고 재 testposttest scripts 를 실행 하지 않 는 다 는 뜻 입 니 다.
이미 pre- 인 script 에 하나 pre- 를 추가 하지 않 으 면 prepretest 무시 된다.npm 에서 내부 명령 pre-post- 을 사용 할 수 있 습 니 다. 예 를 들 어 install, uninstall, publishupdate 등 입 니 다.내부 명령 의 행 위 를 덮어 쓸 수 는 없 지만 pre-post- 를 통 해 그들의 행동 에 영향 을 줄 수 있다.이것 은 당신 이 이렇게 멋 진 일 을 할 수 있다 는 것 을 의미한다.
"scripts": {
    "lint": "jshint **.js",
    "build": "browserify index.js > myproject.min.js",
    "test": "mocha test/",

    "prepublish": "npm run build # also runs npm run prebuild",    
    "prebuild": "npm run test # also runs npm run pretest",
    "pretest": "npm run lint"
  }

Passing Arguments npm 에서 또 다른 멋 진 특징 은 전달 매개 변수 집합 이다.다음 과 같다.
"scripts": {
    "test": "mocha test/",
    "test:xunit": "npm run test -- --reporter xunit"
  }

이 배합 을 통 해 우 리 는 간단하게 실행 할 수 있 습 니 다 npm run test. 그것 은 실 행 될 것 입 니 다 mocha test/. 그러나 우 리 는 -- 전 중단 을 통 해 그 인 자 를 확장 할 수 있 습 니 다.
예 를 들 어 npm run test --anothertest.jsmocha test/ anothertest.js 을 실행 하거나 더 유용 한 것 은 npm run test -- --grep parsermocha test/ --grep parser 로 해석 합 니 다.
NPM Config Variables
마지막 으로 우리 가 주의해 야 할 것 은 npmpackage.json 중 하나 config 명령 이 있어 서 임의의 일련의 값 을 scripts 의 환경 변수 로 포장 할 수 있다 는 것 이다.예 를 들 면:
  "name": "fooproject",
  "config": {
    "reporter": "xunit"
  },
  "scripts": {
    "test": "mocha test/ --reporter $npm_package_config_reporter",
    "test:dev": "npm run test --fooproject:reporter=spec"
  }

여기, config 중 하나 reporter 속성 이 있 는데, 그 값 은 xunit 이다.여기 있 는 모든 config 의 속성 이 환경 변수 에 노출 되 었 습 니 다. npm_package_config_ 을 추가 하기 전에 중단 하고 방문 할 수 있 습 니 다.
위의 예 에서 npm run test 명령 은 $npm_package_config_reporter 변 수 를 사용 하여 config 중의 reporter 값 을 가 져 옵 니 다.
여러 작업 실행GruntCulp 같은 구축 도 구 는 여러 임 무 를 하나의 임무 로 통합 하 는 능력 을 가지 고 있다.그리고 npm 을 사용 할 때 당신 은 두 가지 방식 으로 선택 할 수 있 습 니 다. 이것 은 어떤 의미 가 당신 이 장면 을 사용 하 는 지 에 달 려 있 습 니 다.만약 당신 의 임무 가 선 결 조건 (예 를 들 어 js 를 최소 화하 기 전에 우 리 는 모든 js 코드 를 하나의 파일 로 유도 해 야 한다) 이 라면 pre-post- 갈 고 리 를 사용 하 는 것 이 더 좋 은 선택 이 될 것 입 니 다.또한 아래 와 같이 bash && 연산 자 를 사용 할 수 있 습 니 다.
  "scripts": {
    "build": "npm run build:css && npm run build:js"
  }

이 예 를 살 펴 보 자.
우리 의 package. json 의 scripts 코드 는 다음 과 같다.
  "scripts": {
    "jslint": "node jslint.js",
    "csslint": "node csslint.js",
    "build:css": "node build-css.js",
    "build:js": "node build-js.js",
    "build": "npm run build:css && npm run build:js",
    "prebuild:js": "npm run jslint",
    "prebuild:css": "npm run csslint"
  }

다음은 몇 개의 파일 입 니 다. 실행 할 때 정 보 를 출력 하기 위해 서 입 니 다. 코드 는 다음 과 같 습 니 다.
jslint.js
 console.log("jslint task running...");

csslint.js
 console.log("csslint task running...");

build-css.js
console.log("build:css task running...");

build-js.js
console.log("build:js task running...");

우리 가 npm run build 을 실행 할 때 프로그램의 실행 순 서 는 다음 과 같다.
> npm run build:css && npm run build:js

> npm run csslint
> node csslint.js
csslint task running...

> node build-css.js
build:css task running...

> npm run jslint
> node jslint.js  
jslint task running...

> node build-js.js
build:js task running...

여러 작업 의 흐름 호출

좋은 웹페이지 즐겨찾기