본문으로 바로가기

[Node] package.json 다루기, 사용법

category 공유/Node 2021. 10. 22. 07:46

[Node] package.json 다루기, 사용법

package.json 속성에 대해 다루는 게시글들은 검색해보면 많이 나와있습니다. 그러나 package.json에서 script 여러개 한번에 실행하기, 변수 만들어서 사용하기 등 활용하는 내용은 없는 것 같아 간단하게 작성하여 공유합니다. 실제로 제가 프로젝트를 하면서 배운 내용 중 많이 사용하는 것들 위주로 작성하였으니 습득하면 효율적으로 사용할 수 있을 것 같습니다.

package.json 사용방법

{
  "name": "package",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "start": "node index"
  },
  "license": "ISC"
}

아주 기본적인 package.json 형태이다. 이걸 어떻게 효율적으로 사용할 수 있는 지 알아보자.

■ 변수 사용하기

만약 개발을 할 땐 development 파일의 내용을 사용하고, 배포할 땐 production 파일의 내용을 사용한다고 가정해보자. 최종적으로 사용할 파일명이 last일 때 어떻게 하면 간단하게 파일을 생성할 수 있을까? 아래 package.json 코드를 참고해보자.

{
  "name": "package",
  "version": "1.0.0",
  "main": "index.js",
  "config": {
    "dev": {
      "url": "development"
    },
    "prod": {
      "url": "production"
    }
  },
  "scripts": {
    "start": "node index",
    "deploy:dev": "cp $npm_package_config_dev_url last",
    "deploy:prod": "cp $npm_package_config_dev_url last"
  },
  "license": "ISC"
}

config 속성, scripts 2개 (deploy:dev, deploy:prod)를 추가하였다. yarn deploy:dev 할 경우는 development 파일을 last 파일로 복사, yarn deploy:prod 할 경우 production 파일을 last 파일로 복사한다. 즉 $npm_package_var1_var2_var3_... 이런 식으로 값을 변수 형식으로 사용할 수 있다. 활용할 수 있는 예시는 환경변수 .env 파일이 개발용, 배포용이 따로 있을텐데 이러한 경우 사용하면 좋다.

■ script 여러 개 실행하기

프로젝트가 실행될 때, 스크립트 3개를 실행하고 싶다고 생각해보자. 예를들어 1개 프로젝트 실행하기 전 key 생성, env 생성, 필요한 files 복사를 해야한다고 해보자. 그럼 어떻게 하면 될까? 아래 package.json 코드를 확인해보자.

"scripts": {
    "make:key": "특정 구문 ...",
    "make:envs": "특정 구문 ...",
    "copy:files": "특정 구문 ...",
    "start:all": "run-s make:key make:envs copy:files",
}

yarn start:all 하면 위 3개 명령을 다 할 수 있다. 즉, run-s 명령을 앞에 적어주고 뒤에 필요한 명령어를 작성해주면 된다. run-s를 사용하기 위해서는 npm-run-all을 설치해주어야 한다.

설치 명령어 : npm install npm-run-all --save-dev or yarn add npm-run-all --dev

■ javascript 파일 실행하기 및 매개변수 넘기기

프로젝트가 실행하기 전, 꼭 필요한 작업이 있다고 가정하자. 이때 package.json에서 javascript 코드를 실행해줄 수 있다.

"scripts": {
    "validation": "npx babel-node validation",
    "validation:dev": "npx babel-node validation key1",
    "validation:prod": "npx babel-node validation key2"
}

위 package.json을 살펴보자. 우선 babel-node를 해준 것은 최신 문법을 사용하기 위해서 해준 것이니 참고하면 된다. yarn validation을 하게되면 validation.js 파일이 실행된다. 해당 파일에서 원하는 작업을 하면 된다. 만약 개발 validation에 사용될 key와 배포 validation에 사용될 key가 다르다고 해보자 그럼 validation.js를 2개 작성해야한다. 이건 너무 비효율적이다. 그래서 parameter로 값을 넘길 수 있다. 뒤에 바로 넘겨줄 값을 적으면 된다. 즉 validation:dev에서는 key1이 parameter이고 validation:prod에서는 key2가 parameter이다.

* 사용 방법

validation.js 

const params = process.argv.slice(2); 
console.log("### params", params);

위 코드를 작성하고 yarn validation:dev or yarn validation:prod를 하게되면 params안에 배열로 paramter들이 있는 것을 확인할 수 있다.

결론

위 내용만 잘 이해해도 package.json에서 script를 작성할 때 많은 도움이 될 것 같다.

마지막

해당 내용은 틀릴 수도 있다는 것을 감안하여 봐주세요. 틀린 내용 및 오탈자 수정 요청 환영입니다.

반응형