You are currently viewing Node.js 프로젝트에서 dependencies와 devDependencies의 차이점은 해당 패키지가 필요한 시점을 기준으로 나뉩니다.

Node.js 프로젝트에서 dependencies와 devDependencies의 차이점은 해당 패키지가 필요한 시점을 기준으로 나뉩니다.

node.js

dependencies

dependencies는 애플리케이션이 실행될 때 필요한 패키지들을 포함합니다. 이 패키지들은 애플리케이션의 실제 동작에 필수적이며, 배포된 애플리케이션이 제대로 작동하기 위해 설치되어야 합니다.

예시

{
  "name": "my-app",
  "version": "1.0.0",
  "dependencies": {
    "express": "^4.17.1",
    "mongoose": "^5.10.9"
  }
}

이 경우 expressmongoose는 애플리케이션이 실행될 때 필요하기 때문에 dependencies에 포함됩니다.

devDependencies

devDependencies는 개발 환경에서만 필요한 패키지들을 포함합니다. 이 패키지들은 애플리케이션의 코드를 작성하거나 테스트, 빌드하는 과정에서 필요하며, 실제 배포 시에는 포함되지 않는 경우가 많습니다.

예시

{
  "name": "my-app",
  "version": "1.0.0",
  "devDependencies": {
    "jest": "^26.6.3",
    "eslint": "^7.13.0"
  }
}

이 경우 jesteslint는 테스트와 코드 린팅에 필요하기 때문에 devDependencies에 포함됩니다. 실제 배포 시에는 필요하지 않습니다.

설치 및 사용

npm install 명령어를 사용하면 dependenciesdevDependencies에 정의된 모든 패키지가 설치됩니다. 하지만 --production 플래그를 사용하면 dependencies에 정의된 패키지만 설치됩니다.

npm install --production

예시 코드

package.json 파일의 예시를 통해 dependencies와 devDependencies를 구분하여 사용하는 방법을 확인해봅시다.

{
  "name": "my-app",
  "version": "1.0.0",
  "description": "An example project",
  "main": "index.js",
  "scripts": {
    "start": "node index.js",
    "test": "jest"
  },
  "dependencies": {
    "express": "^4.17.1"
  },
  "devDependencies": {
    "jest": "^26.6.3"
  }
}

예시 프로젝트 구조

my-app/
├── package.json
├── index.js
└── test/
    └── app.test.js

index.js:

const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

test/app.test.js:

const request = require('supertest');
const express = require('express');

const app = express();

app.get('/', (req, res) => {
  res.status(200).send('Hello World!');
});

describe('GET /', () => {
  it('responds with Hello World!', (done) => {
    request(app)
      .get('/')
      .expect(200)
      .expect('Hello World!', done);
  });
});

이 프로젝트에서 express는 애플리케이션이 실행될 때 필요한 패키지이므로 dependencies에 포함됩니다. 반면 jest는 테스트를 위해 필요하므로 devDependencies에 포함됩니다.

이렇게 dependenciesdevDependencies를 구분하여 정의하면, 프로젝트의 의존성을 보다 명확하게 관리할 수 있습니다.

답글 남기기