javascript 이란 npm은 package.json이 수정 된 경우 설치합니다.



package.json 이란 (1)

좋아요, 그래서 저는 그 패키지로 끝났습니다. Here 있습니다. 이상적인 시나리오에서 지정한 것과 동일한 방식으로 사용할 수 있습니다. npm install install-changed 하고 예제에서 pre-run 것처럼 사용자 정의 스크립트에 추가합니다. npm install 필요가 있는지 여부를 알아야하며, 필요할 경우 npm install 해야합니다.

 {
  "scripts": {
    "pre-run": "install-changed",
    "my-script": "…"
  },

당신은 또한 이것을 프로그램 적으로 할 수 있지만, 나는 당신이 이것을 필요로 할 것이라고 생각하지 않는다.

let installChanged = require('install-changed')

let isModified = installChanged.watchPackage() 

위의 함수는 똑같은 일을한다. 부가 적으로 유용한 것으로 보이는 부울 값을 반환한다.

TL : DR : package.json 이 수정 된 경우 npm 스크립트를 실행하기 전에 npm install 를 자동으로 실행하는 방법이 있습니까?

문제 시나리오

package.json 을 업데이트 한 분기를 가져 오거나 체크 아웃합니다. npm run my-script 합니다. my-scriptpackage.json 새로 추가 된 패키지에 따라 달라집니다. my-script 가 실패합니다. 이유가 궁금합니다. 책상을 뒤집기 전에 반드시 npm install 하십시오. my-script 가 성공적으로 실행됩니다. 새 책상이 필요하지 않습니다.

gradle 과 같은 빌드 / 작업 러너 도구는 작업을 실행하기 전에 종속성이 최신인지 확인해야합니다. 나는 항상 npm 않는 (사소한) 고통의 포인트였습니다. 내가 특별히 좋아하지 않는 두 가지 솔루션을 발견했습니다.

이상적인 솔루션 : make

package.json npm 스크립트를 사용 make 명령을 실행하는 대신 make를 사용하고 다음과 같은 트릭을 사용하여 통합 된 종속성 추적을 사용합니다.

# Smart install: Only executes if package.json's
# modification date is later than node_module's

node_modules: package.json
    npm install
    @rm -f node_modules/.modified
    @touch -m node_modules/.modified

install: node_modules 

출처 : https://mattandre.ws/2016/05/make-for-hipsters/

문제는 makemake 하여 스크립트를 실행하고 다른 스크립트를 편리하게 참조하고 병렬로 스크립트를 실행하는 것과 같은 npm 스크립트의 특정 이점을 잃어 버려야한다는 것을 알아야한다는 것입니다 ( npm-run-all ). make 모르고 있거나 실행에 문제가있는 경우 다른 사람들과 협력하기가 더 어렵습니다 (Windows). 이것은 노드 / npm 에코 시스템 외부의 구식 도구이며이 똑똑한 설치 이점에 비해 비용이 많이 듭니다.

이상적인 솔루션 : Git hook

또 다른 방법은 post-merge git hook을 추가하는 것입니다.

문제는이 솔루션이 저장소에 로컬이므로 쉽게 공유 할 수 없다는 것입니다. npm install 은 git merge에서만 자동으로 실행됩니다. 다른 방법으로 package.json 을 변경하면 npm install 실행을 기억 npm install 합니다. 틀림없이, 그것은 실제로는 사소한 부분입니다. 그럼에도 불구하고 스크립트를 실행하고 싶을 때 npm install 을 실행하는 것에 대해 생각할 필요가 전혀 없다는 것은 좋은 일입니다.

출처 : https://davidwalsh.name/git-hook-npm-install-package-json-modified

이상적인 솔루션

package.json 을 다음과 비슷한 방식으로 정의하고 싶습니다.

{
  "scripts": {
    "pre-run": "npm-smart-install",
    "my-script": "…"
  },
  "dependencies": {
    "npm-smart-install": "1.0.0"
  }
}

npm-smart-install 은 내가 원했던 가상의 npm 패키지입니다. pre-run 은 가상의 npm- 스크립트 라이프 사이클 후크입니다. npm run my-script 하면 npm run my-script 하고 package.json 은 마지막 스크립트 실행 이후 수정되었습니다. my-script 를 실행하기 전에 npm install 을 실행하십시오.

반복하려면 : npm 에코 시스템 외부의 도구에 의존하지 않고 package.json 을 수정 한 경우 npm 스크립트를 실행하기 전에 npm install 를 자동으로 실행하는 방법이 있습니까?





package.json