NPM 스크립트에서 명령줄 인수 처리

사용자 정의 인수



애플리케이션을 린트하는 NPM 스크립트가 있다고 가정해 보겠습니다. 그와 같은 것 :

"scripts": {
  "lint": "eslint './src/**/*.{js,ts,tsx}'"
}


그런 다음 자동 모드에서 lint --fix를 추가하기로 결정합니다. lint가 자동으로 오류를 수정해 주기를 원하는 경우가 있기 때문입니다. 그런 다음 다른 스크립트를 추가합니다.

"scripts": {
  "lint": "eslint './src/**/*.{js,ts,tsx}'",
  "lint:fix": "eslint './src/**/*.{js,ts,tsx}' --quiet --fix"
}


귀하의 lint:fix는 기본적으로 두 개의 새로운 매개변수가 있는 lint 스크립트입니다. 따라서 반복하지 않고 params를 lint 명령에 직접 전달하도록 다시 작성할 수 있습니다.

"scripts": {
  "lint": "eslint './src/**/*.{js,ts,tsx}'",
  "lint:fix": "npm run lint -- --quiet --fix"
}


이 접근 방식은 더 간결하고 확장 가능합니다. lint 명령을 변경하면 모든 변형이 수정 사항을 상속합니다. 읽기도 쉽고 이해도 빠릅니다.
-- 표기법은 NPM에서 호출한 현재 명령에 매개변수를 전달하도록 스크립트에 지시합니다. NPM 문서에서: "NPM은 -- 뒤의 모든 인수를 스크립트에 직접 전달합니다."이 기능은 NPM >=2.0.0에서 사용할 수 있습니다. | See the Docs . 모든 명령에 매개변수를 전달할 수 있습니다.

명명된 매개변수



NPM 문서에서: "npm_config_로 시작하는 모든 환경 변수는 구성 매개변수 | See the Docs로 해석됩니다. 즉, npm_config_ 변수를 사용하여 명명된 매개변수를 NPM 스크립트 실행에 전달할 수 있습니다.

NODE_ENV를 기반으로 하는 serve , development , stagingtest의 4가지 모드로 애플리케이션을 제공할 수 있는 production 스크립트가 있다고 가정해 보겠습니다. 따라서 다음과 같은 NPM 스크립트를 사용할 수 있습니다.

"scripts": {
  "serve": "nodemon index.js",
  "serve:dev": "NODE_ENV=development npm run serve",
  "serve:staging": "NODE_ENV=staging npm run serve",
  "serve:test": "NODE_ENV=test npm run serve",
  "serve:prod": "NODE_ENV=production npm run serve"
}


멋진 임무 완수: stage 기반으로 애플리케이션을 제공할 수 있으며 이는 매우 유용합니다. 그러나 이 코드를 리팩토링하여 하나의 스크립트만 사용하고 다음과 같은 npm_config_ 변수를 사용하여 스테이지를 인수로 전달할 수 있습니다.

"scripts": {
  "serve": "NODE_ENV=$npm_config_stage nodemon index.js"
}


이제 다음과 같이 스크립트를 호출할 때 NODE_ENV를 수정하기 위해 stage 매개변수($npm_config_stage)를 전달할 수 있습니다.

npm run serve --stage=development

stage 와 같이 npm run serve stage=whatever 매개변수에 모든 값을 전달할 수 있습니다.

또한 myvar 와 같은 다른 이름을 원할 수도 있습니다. 따라서 npm run serve --myvar=whatever 를 호출하고 npm_config_ var는 $npm_config_myvar 가 됩니다.

결론



사용자 정의 매개변수와 명명된 변수를 사용하면 NPM 스크립트를 더 작고 이해하기 쉽고 유지 관리할 수 있습니다. 그게 전부입니다 :)

표지 이미지 by Luca Bravo @ Unsplash

좋은 웹페이지 즐겨찾기