sourcecode

순차적으로 NPM 스크립트 실행

copyscript 2022. 11. 17. 21:22
반응형

순차적으로 NPM 스크립트 실행

예를 들어,

"scripts": {
    "pre-build": "echo \"Welcome\" && exit 1",
    "build_logic": "start cmd.exe @cmd /k \"yo esri-appbuilder-js:widget && exit 1\"",
    "post_build":  "start C:\\WebAppBuilderForArcGIS\\startupShortcut",
    "exit" : "start cmd.exe @cmd /k \"echo \"goodbye\" && exit 1\""
  },

이러한 모든 스크립트를 순차적으로 기동하기 위해 실행할 수 있는 NPM 명령어는 다음과 같습니다.사전/사후 수정을 사용하면 순차적으로 실행되지만 실행 전에 상위 스크립트가 완료될 때까지 기다리지 않습니다.유일한 해결책은 다음과 같습니다.비동기.시리즈 도우미 기능으로 셸 명령어를 실행할 Gulp 태스크가 순차적으로 실행되도록 하려면 어떻게 해야 합니까?Gulp에서 실행할 수 있다는 것을 알고 있습니다만, 지금은 NPM에서 기능을 검토하고 싶습니다.도와주셔서 감사합니다!

npm run을 통해 다음 스크립트를 호출하고 이중 앰퍼샌드로 체인을 설정합니다.

npm run pre-build && npm run build_logic && npm run post_build && npm run exit

설명:

  • 순차 실행에는 (이중 앰퍼샌드)를 사용합니다.
  • 병렬 실행에는 (단일 앰퍼샌드)를 사용합니다.

@Mobiletainment의 훌륭한 답변에 이어 npm-run-all을 사용하여 명령어를 훨씬 짧고 읽기 쉽게 만들 수도 있습니다.고객님의 경우:

"scripts": {
    ...
    "build": "run-s pre-build build_logic post_build exit"
}

run-s숏컷입니다npm-run-all모든 npm-syslog가 순차적으로 실행되기 때문에-s(run-s의 단축판입니다.npm-run-all -s).

스크립트 접두사를 지정할 수 있습니다.pre그리고.post다음과 같이 자동으로 실행됩니다.

"scripts": {
  "prebuild": "echo \"Welcome\" && exit 1",
  "build": "start cmd.exe @cmd /k \"yo esri-appbuilder-js:widget && exit 1\"",
  "postbuild":  "start C:\\WebAppBuilderForArcGIS\\startupShortcut",
  "exit" : "start cmd.exe @cmd /k \"echo \"goodbye\" && exit 1\""
}

그 후 실행npm run build

그냥 다른 스크립트에 넣을 수도 있어요. "start": "pre-build && build_logic && post_build && exit"

npm-run-all을 사용하면 다양한 방법으로 여러 명령을 조합할 수 있습니다.

예를 들어, 에 다음 스크립트가 있는 경우package.json:

"scripts": {
    "clean": "rimraf dist",
    "lint":  "eslint src",
    "build": "babel src -o lib"
}

다음과 같이 모든 것을 순차적으로 실행할 수 있습니다.

$ npm-run-all clean lint build

여러 npm 명령을 병렬로 실행하는 방법은 이 질문을 참조하십시오.

다음 작업을 수행할 수 있습니다.


"scripts": {
  "clean-dist": "rm -f ./dist/*.js && rm -f ./dist/*.map",
  "build": "npm run clean-dist && parcel build ./packages/index.html"
},

시퀀셜과 패럴렐 혼합의 예

혼합이 필요한 경우 command_2a와 command_2b를 동시에 실행할 수 있도록 command_1을 먼저 실행하고 완료하기 위해 다음과 같이 합니다.

    "dev": "yarn command_1 && (yarn command_2a & yarn command_2b)"

실제 예:

    "dev": "yarn buildPackage && (yarn watchPackageSource & yarn watchExamplePage)"

언급URL : https://stackoverflow.com/questions/39172536/running-npm-scripts-sequentially

반응형