Node.js(package.json)에 대한 "devDependencies" NPM 모듈의 설치를 방지하려면 어떻게 해야 합니까?
제 소포 안에 이것이 있습니다.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
그리고. devDependencies
:
npm install
나는 이 명령이 설치된 것으로 생각했습니다.devDependencies
:
npm install --dev
어떻게 그렇게 만들까요?npm install
만 합니다.dependencies
모듈만 ), (으)와 같은 .npm install --dev
는 둘 다 합니다.dependencies
그리고.devDependencies
?
그npm install
됩니다.devDependencies
다른 한편으로는dependencies
패키지 디렉터리 내에서 개발 환경에서 실행되는 경우(기본값).
버전 8.x 이상에서는 플래그를 사용하여 일반 종속성만 설치합니다.
npm install --omit=dev
이것은 설치만 합니다. dependencies
그리고 아닌devDependencies
가에관이의 NODE_ENV
환경 변수입니다.
버전을 6.x 이버사경우를 .--only=prod
대신 플래그를 지정합니다.
참조:
의 v3 이전에는 npm(2015-08-13)이라는 .--production
를 들어 예를 들어.
npm install --production
또한 필요할 수도 있습니다.--no-optional
깃발
나도 그 문제에 부딪혔어요! npm 설치는 다소 혼란스럽고 웹 게시물은 명시적인 '개발' 설치 모드가 있는 것처럼 -d/--dev 플래그를 계속 불러옵니다.
npm install
"Dependencies" 및 "devDependencies"를 모두 설치합니다.npm install --production
종속성만 설치합니다.npm install --dev
"devDependencies"만 설치합니다.
새 옵션은 다음과 같습니다.
npm install --only=prod
devDependencies만 설치하려는 경우:
npm install --only=dev
모든 종속성을 이미 설치한 경우 NPM에서 프로덕션 패키지를 다시 다운로드하지 않으려면 다음을 입력하면 됩니다.
npm prune --production
그러에개종제거에서 됩니다.node_modules
할 때 .
- 개발 종속성을 사용하여 내 프로젝트를 웹 팩합니다.
- 프로덕션 모듈만 사용하여 도커 이미지 구축
중입니다.npm prune
그 사이에 모든 것을 다시 설치하지 않아도 됩니다!
2016년에 이 POST를 읽으신다면, 사용하여 원하는 것을 이루시기 바랍니다.
--only={prod[uction]|dev[elopment]}
인수를 지정하면 NODE_ENV에 관계없이 devDependencies만 설치되거나 non-devDependencies만 설치됩니다.
출처: https://docs.npmjs.com/cli/install
"npm 설치"를 사용하면 모듈이 "devDependencies"인지 "dependencies"인지에 관계없이 응용 프로그램 전체에서 로드되고 사용할 수 있습니다.이 아이디어의 요약: 당신의 패키지에 있는 모든 것.json은 node_dll에 설치되는 종속성(모든 유형)으로 정의합니다.
종속성/devDependencies/옵션 종속성 간의 차이의 목적은 코드 소비자가 이러한 리소스를 설치하기 위해 npm으로 수행할 수 있는 작업입니다.
설명서에 따라 https://npmjs.org/doc/json.html ...
프로그램에서 모듈을 다운로드하여 사용하려는 경우 사용하는 외부 테스트 또는 문서 프레임워크를 다운로드하거나 구축할 필요가 없을 수 있습니다.
이 경우 이러한 추가 항목을 devDependencies 해시에 나열하는 것이 가장 좋습니다.
--dev 구성 플래그가 설정될 때마다 이러한 항목이 설치됩니다.이 플래그는 npm 링크를 수행하거나 패키지의 루트에서 npm 설치를 수행할 때 자동으로 설정되며 다른 npm 구성 매개 변수처럼 관리할 수 있습니다.이 항목에 대한 자세한 내용은 구성(1)을 참조하십시오.
그러나 이 문제를 해결하려면 npm을 사용하여 "의존성"만 설치하려면 다음 명령을 사용합니다.
npm install --production
이는 이 필터를 추가한 Git commit(Git commit)을 보면 확인할 수 있습니다(이 기능을 제공하기 위해 아래 나열된 일부 다른 필터와 함께).
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
@dmarry npm install --production을 사용하여 시도합니다.
할 때 합니다(npm이 있는 ).package.json
레지스트리,시스템의 다른 에 있는 합니다.다른 위치(npm 레지스트리, gitrepo, 파일 시스템의 다른 위치)에 있는 경우 종속성만 설치합니다.
를 사용할 것을 제안합니다.npm ci
작성한 대로 운영에 필요한 패키지만 설치하려면devDependencies
그러면:
npm ci --only=production
또는
NODE_ENV=production npm ci
만약 당신이 오래된 학교를 선호한다면,npm install
그러면:
npm install --production
또는
NODE_ENV=production npm install
다음은 사용해야 하는 이유에 대한 좋은 대답입니다.npm ci
.
당신이 그것을 사용할 수 있다는 것을 언급할 가치가 있습니다.NODE_ENV
동일한 결과를 얻기 위한 환경 변수.Node 응용프로그램(예: Docker)을 컨테이너화하는 경우 특히 유용합니다.
NODE_ENV=production npm install
, 위코드개를제발모설외종다치을니합속성든한자는의▁will)를 제외한 합니다.devDependencies
).
에서 환경 해야 할 수 .Dockerfile
자세한 내용은 여기에서 확인할 수 있습니다.
환경 변수는 필요할 때마다 덮어쓸 수 있습니다(예: Travis CI에서 테스트 제품군을 실행하려는 경우).그런 경우 다음과 같은 작업을 수행할 수 있습니다.
docker run -v $(pwd):/usr/src/app --rm -it -e NODE_ENV=production node:8 npm install
생산.
- 기본값: false
유형: 부울 "생산" 모드에서 실행하려면 true로 설정합니다.
- 인수 없이 로컬 npm 설치를 실행하는 경우 devDependency가 최상위 수준으로 설치되지 않습니다.
- 수명 주기 스크립트에 대해 NODE_ENV="production"을 설정합니다.
행복한 컨테이너화 =)
npm install --production --no-optional
에서 dep만 설치됩니다.dependencies
그리고 무시할 것입니다.optionalDependencies
그리고.devDependencies
도커 노드에서 current-slim(npm 7.0.9 실행) 문제가 발생했습니다.npm install
무시하는 것처럼 보였습니다.--production
,--only=prod
그리고.--only=production
두 가지 해결 방법을 찾았습니다.
- 대신 ci를 사용합니다(
RUN npm ci --only=production
) 최신 package-lock.json이 필요합니다. - 전에
npm install
패키지를 잔인하게 편집합니다.json with:
RUN node -e 'const fs = require("fs"); const pkg = JSON.parse(fs.readFileSync("./package.json", "utf-8")); delete pkg.devDependencies; fs.writeFileSync("./package.json", JSON.stringify(pkg), "utf-8");'
작업 패키지를 편집하지 않습니다.json, 도커 컨테이너에 복사된 것만.물론, 이것이 필요하지는 않지만, 만약 그렇다면 (나에게 그랬던 것처럼), 당신의 해킹이 있습니다.
선택한 답변에 추가해야 함: 현재,npm install
패키지 디렉터리(포함)package.json
)는 devDependencies를 설치하지만npm install -g
설치하지 않습니다.
노드 추가 기능이 포함된 패키지에 대해 개발 종속성을 설치하려고 하면 devDependencies를 설치하고 싶어도 npm install --dev를 실행할 때 추가 기능을 빌드하지 않을 수 없습니다.그래서, 저는 npm의 등을 돌아야 했습니다.
node -e 'console.log( Object.keys( require( "./package.json" ).devDependencies ) );' | \
sed -e "s/^[^']*'//" -e "s/'.*$//" | \
xargs npm install
아니면, 더 나은 (그리고 더 간결하게),
node -e 'Object.keys( require( "./package.json" ).devDependencies )
.map( function( item ){ console.log( item ) } );' | xargs npm install
사용하다npm install packageName --save
이것은 패키지 독립성을 추가할 것입니다, 만약 당신이 사용한다면.npm install packageName --save-dev
그런 다음 devDependencies입니다.
npm install packageName --save-dev
개발 목적으로 패키지를 추가하는 데 사용해야 합니다.TDD 패키지(차이, 모카 등)를 추가하는 것과 같습니다.개발에 사용되고 생산에는 사용되지 않습니다.
npm install --production
는 프로덕션에 필요한 노드 모듈을 설치하는 올바른 방법입니다.하십시오.
언급URL : https://stackoverflow.com/questions/9268259/how-do-you-prevent-install-of-devdependencies-npm-modules-for-node-js-package
'programing' 카테고리의 다른 글
클릭 이벤트가 자녀가 아닌 부모 DIV에게만 불을 지르는 방법은? (0) | 2023.05.22 |
---|---|
SQL Server 시간 초과 예외를 잡는 방법 (0) | 2023.05.22 |
목록에서 첫 번째 N개 요소를 제거하는 가장 효율적인 방법은 무엇입니까? (0) | 2023.05.22 |
MongoDB - 10진수 유형의 값은 어떻습니까? (0) | 2023.05.22 |
gitstash 변경 사항이 새 지점에 적용됩니까? (0) | 2023.05.22 |