[node.js] Node.js (package.json) 용 “devDependencies”NPM 모듈 설치를 어떻게 방지합니까?

내 package.json 파일 (단축 버전)에 이것을 가지고 있습니다 :

{
  "name": "a-module",
  "version": "0.0.1",
  "dependencies": {
    "coffee-script":      ">= 1.1.3"
  },
  "devDependencies": {
    "stylus":             ">= 0.17.0"
  }
}

Mac 10.6.8에서 NPM 버전 1.1.1을 사용하고 있습니다.

프로젝트 루트에서 다음 명령을 실행하면 dependencies and가 모두 설치됩니다 devDependencies.

npm install

이 명령이 다음을 설치했다는 인상을 받았습니다 devDependencies.

npm install --dev

어떻게 그렇게해야합니까 npm install에만 설치 dependencies(생산 환경 만 모듈을 얻을 수 있도록) 동안 같은 npm install --dev설치 횟수 모두 dependenciesdevDependencies?



답변

npm install명령은 개발 환경 (디폴트)의 패키지 디렉토리 내에서 실행될 때 devDependencies서로 를 설치합니다 dependencies.

사용 npm install --only=prod(또는 --only=production) 설치 뿐만 dependencies 아닌 devDependencies,관계없이 값의 NODE_ENV환경 변수.

출처 : npm docs

참고 : NPM (2015년 8월 13일)의 전 V3.3.0은 옵션이 불렀다 --production즉, npm install --production.


답변

나도 그 문제에 부딪쳤다! npm 설치는 다소 혼란스럽고 웹 게시물은 명시적인 ‘개발’설치 모드가있는 것처럼 -d /-dev 플래그를 계속 가져옵니다.

  • npm install종속성 “및 ” devDependencies “를 모두 설치합니다.

  • npm install --production종속성 ” 만 설치합니다

  • npm install --devdevDependencies ” 만 설치합니다


답변

새로운 옵션은 다음과 같습니다.

npm install --only=prod

devDependencies 만 설치하려는 경우 :

npm install --only=dev


답변

2016 년 에이 POST를 읽으면 다음을 사용하여 원하는 것을 달성하십시오

--only={prod[uction]|dev[elopment]} 

인수는 NODE_ENV에 관계없이 devDependencies 또는 non-devDependencies 만 설치합니다.

에서 : https://docs.npmjs.com/cli/install


답변

모든 종속성을 이미 설치했고 NPM에서 프로덕션 패키지를 다시 다운로드하지 않으려면 다음을 입력하면됩니다.

npm prune --production

이렇게하면 node_modules폴더 에서 개발자 종속성이 제거되므로 다음 과 같은 2 단계 프로세스를 자동화하려는 경우 유용합니다

  1. 개발자 의존성을 사용하여 프로젝트를 Webpack
  2. 프로덕션 모듈 만 사용하여 Docker 이미지 빌드

npm prune중간에 실행 하면 모든 것을 다시 설치하지 않아도됩니다!


답변

“npm install”을 사용하면 모듈이 “devDependencies”인지 “dependencies”인지에 관계없이 응용 프로그램 전체에로드되어 사용 가능합니다. 이 아이디어의 요약 : package.json이 종속성 (모든 유형)으로 정의하는 모든 것이 node_modules에 설치됩니다.

dependencies / devDependencies / optionalDependencies의 차이점은이 코드를 설치하기 위해 npm없이 코드 소비자가 할 수있는 것입니다.

문서 당 : https://npmjs.org/doc/json.html

누군가 자신의 프로그램에서 모듈을 다운로드하여 사용할 계획이라면 아마도 사용하는 외부 테스트 또는 문서 프레임 워크를 다운로드하거나 빌드하지 않아도됩니다.

이 경우 이러한 추가 항목을 devDependencies 해시에 나열하는 것이 가장 좋습니다.

–dev configuration 플래그가 설정 될 때마다 설치됩니다. 이 플래그는 npm 링크를 수행하거나 패키지 루트에서 npm을 설치할 때 자동으로 설정되며 다른 npm 구성 매개 변수와 같이 관리 할 수 ​​있습니다. 주제에 대한 자세한 내용은 config (1)를 참조하십시오.

그러나이 질문을 해결하기 위해 npm을 사용하여 “종속성”만 설치하려는 경우 다음 명령은 다음과 같습니다.

npm install --production

이것은이 필터를 추가 한 Git 커밋 (이 기능을 제공하기 위해 아래에 나열된 다른 필터와 함께)을 보면 확인할 수 있습니다.

npm에서 사용할 수있는 대체 필터 :

--save          => updates dependencies entries in the {{{json}}} file
--force         => force fetching remote entries if they exist on disk
--force-latest  => force latest version on conflict
--production    => do NOT install project devDependencies
--no-color      => do not print colors

@dmarr는 npm install –production을 사용해보십시오.


답변

npm은 패키지 내부에서 설치할 때 ( package.json현재 디렉토리에있는 경우) dev 종속성을 설치 합니다. 다른 위치 (npm 레지스트리, git repo, 파일 시스템의 다른 위치)에서 온 경우 종속성 만 설치합니다.