Back-End

yarn 과 yarn run

졸려질려 2022. 4. 4. 18:39
반응형

yarn

yarn 이란, 다른 개발자들의 코드를 사용하거나, 자신의 코드를 공유할 수 있도록 해주는 패키지 매니저의 일종이다. 개발자들의 코드를 공유할 수 있어서, 문제를 해결할 때나 자신의 소프트웨어를 개발하는 데 큰 도움을 줄 수 있다. package.json 에 원하는 패키지를 명시하면, yarn 은 명시된 패키지들을 참조하여 프로그램을 실행한다.

yarn run [script] - Normal

yarn run 은 자주 사용하는 명령어들을 간단한 명령어로 매핑하여 쉽게 사용할 수 있게 해주는 기능이다. 명령어 매핑은 package.json 파일에서 scripts 라는 Key 안에 명시하면 된다.

{
  "name": "my-package",
  "scripts": {
    "build": "babel src -d lib",
    "test": "jest"
  }
}

name 은 명시하지 않아도 run 이 된다. 그 외에 scripts 라는 key 에 각 옵션명과 명령어를 매핑하여 JSON 형식으로 명시하면 된다. 명시한 후에

yarn run test

과 같이 명령어를 입력하면, scripts에서 명시했던 test에 매칭되는 jtest 명령어가 실행된다. test 가 곧 jtest 명령어이기 때문에, jtest에서 사용할 수 있는 옵션도 같이 사용할 수 있다.

yarn run test -o --watch

위와 같은 yarn run test -o --watchjtest -o --watch와 같은 뜻이라고 보면 된다.

yarn run [script] - Exec

scripts 에는 명령어만 매핑할 수 있는 것이 아니라 node_modules/.bin/ 안에 있는 실행 파일들도 매핑이 가능하다.

"scripts": {
    "dev": "nodemon --exec babel-node server.js",
}

위와 같이 devnode_modules/.bin/ 폴더 안에 있는 nodemon 파일을 실행하는 코드를 매핑할 수 있다. 그리고 babel-node로 server.js 파일을 같이 실행하는 명령어도 추가했다. 매핑한 후에 yarn run dev 명령어를 입력하면, nodemon이 실행되고 server.js가 같이 실행되는 것을 볼 수 있다.

yarn run [script] - Pre & Post

하나의 script가 실행한 전이나 후에 무언가를 실행하도록 명령어를 매핑할 수도 있다.

{
  "name": "my-package",
  "scripts": {
    "build": "babel src -d lib",
    "prebuild": "jest"
  }
}

위와 같이 build script가 있고, 앞에 pre를 붙인 prebuild script를 추가하면, build에 해당되는 명령어가 실행되기 이전에 prebuild의 명령어가 실행된다. pre 외에도 postbuild로 매핑을 하면, build 명령어가 수행된 후에 postbuild의 명령어가 실행된다.

yarn run env

yarn run env 명령어는 런타임에 사용 가능한 환경 변수 목록을 출력한다. 필요에 따라 지금까지 봐왔던 것처럼 scripts 안에 오버라이드 할 수 있다.

yarn run

yarn run만 입력했을 때, package.json 파일에 scripts가 명시된 것이 없다면 패키지에서 실행할 수 있는 모든 스크립트를 나열한다. 반면에, scripts를 정의해둔다면, scripts에서 매핑했던 명령어들이 나열되고, 어떤 명령어를 쓸지 선택할 수 있도록 해준다.

반응형