개발일지

[node.js] package.json, package-lock.json 본문

javascript/node.js

[node.js] package.json, package-lock.json

강강강 2021. 11. 22. 09:44

[package.json]

-모든 npm 프로젝트는 루트에 package.json 파일을 포함하고 있다. 

-처음 프로젝트 만들 때 npm init 명령어로 package.json 파일을 만든다.

-package.json 파일에는 프로젝트와 관련된 메타데이터를 작성한다. 주고받는 패키지에 대한 상세 설명서라고 할 수 있다.

-협업을 위해 package.json 을 사용해 각자의 컴퓨터에 같은 패키지들을 성치하여 같은 개발환경을 구성할 수 있다.

-그러나 몇가지 조건이 들어맞는 경우 같은 package.json 을 사용하여 npm install 을 하더라도 서로 다른 node_modules 를 생성하는 경우가 발생한다. -> package-lock.json 이 있는 이유

 

{
  "name": "@kwjs/scripts",
  "version": "1.0.0",
  "description": "scraping scripts dev project",
  "private": true,
  "author": "KWIC",
  "license": "UNLICENSED",
  "readmeFilename": "README.md",
  "workspaces": [
    "packages/*",
    "plugins/*"
  ],
  "engines": {
    "node": ">=10.0.0"
  },
  "devDependencies": {
    "@types/smartaib": "latest",
    "@commitlint/cli": "^12.0.1",
    "@commitlint/config-conventional": "^9.1.1",
    "@rollup/plugin-babel": "5.1.0",
    "@rollup/plugin-commonjs": "14.0.0",
    "@rollup/plugin-node-resolve": "^8.4.0",
    "commitlint-config-jira": "^1.5.1",
    "commitlint-plugin-jira-rules": "^1.5.1",
    "cross-env": "7.0.2",
    "git-cz": "^4.7.0",
    "husky": "^4.2.5",
    "read-pkg-up": "7.0.1",
    "rollup": "2.23.0",
    "rollup-plugin-peer-deps-external": "2.2.3",
    "rollup-plugin-terser": "^7.0.2",
    "rollup-plugin-uglify": "^6.0.4"
  },
  "scripts": {
    "rollup": "rollup -c",
    "commit": "git-cz",
    "lint": "eslint ./packages --ext ts --ext tsx"
  }
}

https://docs.npmjs.com/cli/v7/configuring-npm/package-json

 

package.json | npm Docs

Specifics of npm's package.json handling

docs.npmjs.com

[package-lock.json]

-위와같은 이유로 package-lock.json 파일이 필요하다.

- 이 파일은 node_modules 구조나 package.json 파일이 수정되고 생성될 때 당시 의존성에 대한 정확하고 구체적인 정보를 품고 자동으로 생성된다. (npm install 하면 생겨난다고 생각하면 될듯하다.)

 

-package-lock.json 이 존재할 때 npm install 을 하게되면 package.json 이 아니라 package-lock.json 을 사용해 node_modules 를 생성한다. 

 

- 개발자들이 동일한 node_modules 트리를 생성해서 같은 의존성을 설치할 수 있도록 보장해준다. 그러므로 이 파일도 같이 커밋하자.

 

https://docs.npmjs.com/cli/v7/configuring-npm/package-lock-json

 

package-lock.json | npm Docs

A manifestation of the manifest

docs.npmjs.com

 

 

'javascript > node.js' 카테고리의 다른 글

[node.js] npm vs. yarn  (0) 2021.11.22