itsource

--save와 --save-dev의 차이점은 무엇입니까?

mycopycode 2023. 5. 22. 21:02
반응형

--save와 --save-dev의 차이점은 무엇입니까?

다음의 차이점은 무엇입니까?

npm install [package_name]

그리고:

npm install [package_name] --save

그리고:

npm install [package_name] --save-dev

이것은 무엇을 의미합니까?그리고 정말로 그 효과는 무엇입니까?--save그리고.-dev키워드?

--save그리고.--save-dev사용자 자신의 프로젝트에서 둘 다 시도한 경우에는 즉시 눈에 띄지 않을 수 있습니다.여기 몇 가지 예가 있습니다.

모멘트 패키지를 사용하여 날짜를 구문 분석하고 표시하는 앱을 구축했다고 가정해 보겠습니다.당신의 앱은 스케줄러이기 때문에 이 패키지를 실행하기 위해서는 정말 필요합니다: 패키지 없이는 실행할 수 없습니다.이 경우 사용할 수 있습니다.

npm install moment --save

그러면 패키지에 새 값이 생성됩니다.제이손

"dependencies": {
   ...
   "moment": "^2.17.1"
}

개발 중에는 테스트 스위트와 같은 도구를 사용하는 것이 정말 도움이 되며 자스민 코어와 업보가 필요할 수도 있습니다.이 경우 사용할 수 있습니다.

npm install jasmine-core --save-dev
npm install karma --save-dev

이렇게 하면 패키지에 새 값이 생성됩니다.제이손

"devDependencies": {
    ...
    "jasmine-core": "^2.5.2",
    "karma": "^1.4.1",
}

정상 상태에서 앱을 실행하는 데 테스트 제품군이 필요하지 않으므로,--save-dev유형 종속성, 그 이상은 아닙니다.여러분은 만약 여러분이 실제로 무슨 일이 일어나고 있는지 이해하지 못한다면, 그것은 상상하기 조금 어렵습니다.

NPM 문서 # 종속성에서 직접 추출

종속성

종속성은 패키지 이름을 버전 범위에 매핑하는 단순 개체에서 지정됩니다.버전 범위는 공백으로 구분된 설명자가 하나 이상 있는 문자열입니다.종속성은 tarball 또는 git URL로도 식별할 수 있습니다.

종속성 개체에 테스트 하니스 또는 트랜스파일러를 넣지 마십시오. 아래의 devDependencies를 참조하십시오.

심지어 문서에서도, 그것은 당신에게 사용을 요구합니다.--save-dev테스트 하니스와 같은 모듈의 경우.

  • --save-dev개발 목적으로 패키지를 저장하는 데 사용됩니다.예: 단위 테스트, 최소화.
  • --save응용 프로그램을 실행하는 데 필요한 패키지를 저장하는 데 사용됩니다.

기본적으로 NPM은 node_modules 아래에 패키지를 설치합니다. / 을 에 .dependencies의 의션 package.json.

--save-dev타사 패키지를 패키지의 개발 종속성에 추가합니다.가 다른사가실때설않습다니지치되행할용을 실행할 때 않을 입니다.npm install직접 패키지를 설치할 수 있습니다.일반적으로 소스 리포지토리를 먼저 복제한 후 실행하는 경우에만 설치됩니다.npm install그 안에

--save타사 패키지를 패키지의 종속성에 추가합니다.가 실행할 때마다 패키지와 입니다.npm install package.

개발 종속성은 패키지 개발에만 필요한 종속성입니다.여기에는 테스트 러너, 컴파일러, 패키저 등이 포함될 수 있습니다.두가지유종속모두패패에 됩니다.package.json 파일파.--save에 추가합니다.dependencies,--save-dev에 추가합니다.devDependencies

npm 설치 설명서는 여기에서 참조할 수 있습니다.

--

참고로--save 5NPM 5부터 시작하여입니다.그러므로, 그것은 더 이상 명시적으로 필요하지 않습니다.실이가다니합을 실행하는 것이 합니다.npm install 없이--save동일한 결과를 얻기 위해.

예를 하나 들어보죠.

  • 당신은 패키지를 테스트하기 위해 다른 테스트 라이브러리를 사용하는 매우 심각한 npm 라이브러리의 개발자입니다.
  • 사용자가 라이브러리를 다운로드하고 자신의 코드에서 라이브러리를 사용하려고 합니다.테스트 라이브러리도 다운로드해야 합니까?사용할 수 있습니다jest테스트를 위해 그리고 그들은 사용합니다.mocha은 그들이 를 원합니까?jest역시?단지 도서관을 운영하기 위해서?

아니요, 그렇죠?그게 그들이 있는 이유입니다.devDependencies.

가 그럴 때, 가그럴때면누군때▁when면.npm i yourPackage라이브러리를 실행하는 데 필요한 라이브러리만 설치됩니다.코드를 번들로 제공하거나 테스트 및 조롱하는 데 사용한 다른 라이브러리는 해당 라이브러리를 에 넣었기 때문에 설치되지 않습니다.devDependencies꽤 깔끔하죠?

그렇다면 개발자들은 왜 devDependencies를 공개해야 합니까?

당신의 패키지가 오픈 소스 패키지이고 수백 명의 사람들이 당신의 패키지에 풀 요청을 보내고 있다고 가정해 보겠습니다.그러면 그들은 패키지를 어떻게 테스트할 것입니까?그들은 할 것입니다.git clone당신의 보고서와 그들이 의존성과 devDependencies를 수행할 시기.
왜냐하면 그들은 당신의 패키지를 사용하지 않기 때문입니다.그들은 패키지를 추가로 개발하고 있기 때문에 당신의 패키지를 테스트하기 위해서는 기존의 테스트 케이스를 통과해야 하고 새로 작성해야 합니다.그래서, 그들은 당신의 것을 사용해야 합니다.devDependencies사용한 모든 테스트/구축/모킹 라이브러리가 포함되어 있습니다.

이에 대한 완벽한 예는 다음과 같습니다.

$ npm install typescript --save-dev

이 경우 Typescript(javascript-parseable coding language)를 개발할 수 있도록 하고 싶지만, 앱이 배포되면 모든 코드가 javascript로 변환되어 더 이상 필요하지 않습니다.따라서 게시된 앱에 포함시키는 것은 말이 되지 않을 것입니다.실제로 공간을 차지하고 다운로드 시간을 늘릴 뿐입니다.

답변에서 @andreas-hultgren이 제안한 바와 같이 npm 문서에 따르면:

프로그램에서 모듈을 다운로드하여 사용하려는 경우 사용하는 외부 테스트 또는 문서 프레임워크를 다운로드하거나 구축할 필요가 없을 수 있습니다.

그러나 웹앱 개발을 위해 Yeman(동료 검토, 사전 작성된 패키지를 설치하는 비계 도구).json 파일 등)은 모든 패키지를 devDependencies에 배치하고 종속성은 없습니다. 따라서 사용하는 것으로 보입니다.--save-dev적어도 웹 앱 개발에 있어서는 안전한 베팅입니다.

--save-dev의 "인 semver "devDependencies"에저장합니다.--save대신 "의존성"에 저장합니다.

--save-dev응용프로그램 개발에 사용되는 모듈에 사용되며, 프로덕션 환경에서 실행하는 동안 필요하지 않습니다.--saveapplication.json 실행하려면 applicationjson을 실행해야 .

express, 이 »: express, body-parser, lodash, helmet, mysql 이 사용됩니다.--save, chai, mocha, mova, chai, sonarquebe-모두개발중에면려오, 에, 으성넣속들발istanbul을성속안동종▁to-▁while▁devencies▁those▁put▁inso▁momo오개넣종시▁in▁are▁depend▁develop십을그cha발두개에으성-발속,mentcha▁,▁.에중들것scanner▁during용는bechaibe모

또한 npm 링크 또는 npm 설치는 프로젝트 폴더에 종속성 모듈과 함께 개발 종속성 모듈을 설치합니다.

Forget »--save-dev.

가장 간단한 대답은--save-dev다른 개발자를 위한 패키지를 만들고 lodash, mongoose, expressNPM 레지스트리에서 패키지를 호스팅하려는 경우에 유용합니다.노드 서버를 구축하거나 작성할 때는 다음과 같은 차이가 없습니다.--save그리고.--save-dev노드 서버 구현은 사용자에게 비공개이며 NPM에 게시하지 않을 것이기 때문입니다.

NPM 설치 작동 방식

npm install express와 같은 npm을 사용하여 새 패키지를 설치할 때마다 NPM이 해당 패키지를 시스템에 설치하고 node_modules 폴더에 넣으면 NPM 패키지를 분석합니다. 경우 새로 설치패키지의 json 파일, 즉 익스프레스는 NPM을 분석한 후 패키지종속성 섹션에 언급된 모든 패키지를 설치합니다.속달 패키지json 파일.express가 종속된 패키지를 설치한 후 NPM이 패키지다시 분석합니다.새로 설치된 모든 패키지의 json 파일과 해당 패키지에 대한 패키지를 다시 설치하면 모든 패키지가 제대로 작동할 수 있을 때까지 이 주기가 계속됩니다.터미널이 프로젝트 디렉터리의 위치를 가리켜야 하는 터미널에서 npm list를 실행하여 패키지 종속성을 확인할 수 있습니다.

어떻게.--save-dev에서 설명한 ?

만약 당신이 express와 같은 새로운 패키지를 만들고 싶다면, 이 새로운 패키지를 개발하는 동안 아마도 유닛 테스트 코드를 작성하고 다른 사용 가능한 테스트 패키지로 패키지를 테스트하고 싶을 것입니다. 이 경우 모카를 가정해 보겠습니다.이제 모카는 패키지를 사용하는 데 필요하지 않은 패키지를 테스트하는 데만 필요하다는 것을 알게 되었습니다.이 경우 모카를 사용하여 설치해야 합니다.--save-dev플래그를 지정하지 않으면 개발자가 NPM을 사용하여 패키지를 설치할 때마다 NPM이 플래그를 설치합니다.따라서 누군가 NPM에서 패키지를 설치할 때 종속성을 설치하지 않으려면 다음을 사용하여 패키지를 설치해야 합니다.--save-dev개발 단계에서

라스트 씽

마세요.--save-dev협업 개발을 통해, 만약 누군가가 github과 같은 소스 버전 제어 시스템에서 당신의 패키지 코드를 복제했다면, NPM은 확실히 모든 devDependencies, 즉 패키지를 사용하여 설치할 것입니다.--save-dev 한또.

명확한 답변이 이미 제공되었습니다.하지만 언급할 가치가 있습니다.devDependencies패키지 설치에 영향을 줍니다.

기본적으로 npm 설치는 패키지에 종속성으로 나열된 모든 모듈을 설치합니다.json. --production 플래그(또는 NODE_ENV 환경 변수가 production으로 설정된 경우)를 사용하면 npm은 devDependencies에 나열된 모듈을 설치하지 않습니다.

참조: https://docs.npmjs.com/cli/install

를 사용하여 npm 패키지를 사용할 수 .npm install <package-name>종속성으로 설치하는 중입니다.

에 됩니다.package.json 일아 dependencies5 : 전)--save).
전에npm install lodash
Enter 키를 누른 후 패키지를 확인합니다.json 파일.

"dependencies": {
    "lodash": "4.x",  
},

를 할 때-D깃발, 또는--save-dev하여 당은그 개종로설고치하으, 그은그추니다합가을것에 합니다.devDependencies리스트에합니다.

전에npm install --save-dev lite-server
Enter 키를 누른 후 패키지를 확인합니다.json 파일

"devDependencies": {
    "lite-server": "^2.6.1"
},

개발 종속성은 프로덕션에서 필요하지 않은 개발 전용 패키지로 사용됩니다.예를 들어 패키지, 웹 팩 또는 Babel 테스트.

운영 환경으로 이동할 때 입력하는 경우npm install에는 그고폴다포니다합함음을는이 들어 .package.json, 할 때됩니다. npm 파일은 파일 형식입니다.

은 야해합니다설을 .--production플래그(npm install --production이러한 개발 종속성을 설치하지 않도록 합니다.

여기에 있는 모든 설명은 훌륭하지만 매우 중요한 것이 부족합니다.로프션종 설속만방무까 법엇니 (개발 (개발 종속성 없이).우리는 헤어집니다.dependenciesdevDependencies을 이용하여--save또는--save-dev사용하는 모든 것을 설치하려면:

npm i

프로덕션 패키지만 설치하려면 다음을 사용해야 합니다.

npm i --only=production

일반적으로 개발 목적으로만 사용하려는 제품으로 프로덕션 패키지를 부풀리는 것을 원하지 않습니다.

사용하다--save-dev(또는)-DUnit Test Framework(just, jasmine, mocha, chai 등)와 같은 패키지를 분리하는 옵션

는 운영위앱필요다패른다키는음사합니다설치용을 사용하여 설치해야 합니다.--save(또는)-S).

npm install --save lodash       //prod dependency
npm install -S moment           // "       "
npm install -S opentracing      // "       "

npm install -D jest                 //dev only dependency
npm install --save-dev typescript   //dev only dependency

당신이 우연경을 .package.json파일을 작성하면 두 개의 다른 섹션 아래에 이러한 항목이 나열됩니다.

"dependencies": {
  "lodash": "4.x",
  "moment": "2.x",
  "opentracing": "^0.14.1"
},

"devDependencies": {
    "jest": "22.x",
    "typescript": "^2.8.3"
},
  1. --save-dev (개발에만, 생는사지않음용하사용에산▁()

  2. --save 종속성생산 종속성)

  3. --global또는-g 즉, 시스템 할 수 (전세적으로사. 즉로컬, 스시템나사용가능서어디에

사람들은 프로덕션에서 npm을 사용하여 사악하고 멋진 일을 합니다. Node.js는 이러한 예입니다. 따라서 모든 개발 도구가 실행되는 것을 원하지 않습니다.

서버에 저장할 빌드 파일을 만들기 위해 Gulp(또는 유사한)를 사용하는 경우에는 크게 문제가 되지 않습니다.

기본적으로 우리는 씁니다.

npm install package_name

그러나 특히 테스트 목적의 경우 응용 프로그램이 정상 상태로 실행되는 동안 일부 패키지를 실행할 필요가 없으므로 노드에서 이 문제를 해결할 수 있는 좋은 방법을 제공합니다.우리가 글을 쓸 때마다

npm install package_name --save-dev

이 패키지는 개발 목적으로만 설치됩니다.

저는 제 아이디어 중 일부를 다음과 같이 추가하고 싶습니다.

나는 다른 사람이 당신의 코드를 혼자 사용하는 대신에 당신의 코드를 사용할 때 모든 차이가 나타날 것이라고 생각합니다.

를 들어,인 " " ", " "를 합니다.node's request

당신의 도서관에서,

문자열과 객체를 처리하기 위해 lodash를 사용했습니다. lodash가 없으면 코드를 실행할 수 없습니다.

다른 사용자가 HTTP 라이브러리를 코드의 일부로 사용하는 경우.당신의 코드는 그의 것으로 컴파일될 것입니다.

가 필요하기 lodash가, 그서당입합니야다력해다신은래니요필을 넣어야 .dependencies편집하기 위해


만약 당신이 다음과 같은 프로젝트를 쓴다면.monaco-editor웹 에디터,

당신은 당신의 모든 코드와 당신의product env library웹 팩을 사용하여 빌드가 완료되면 다음만 사용합니다.monaco-min.js

그래서 누군가는 신경쓰지 않아요--save또는--save-dependencies그가 필요로 하는 것은monaco-min.js

요약:.

  1. 코드를 만약누가당코드컴원를면한를다기하파일신의가군,면▁(▁if원,lodash 의코에드의사용된해당신으로 됩니다.dependencies

  2. 만약 누군가가 당신의 코드에 더 많은 기능을 추가하고 싶다면, 그는 필요합니다.unit test그리고.compiler을 이들을에담에 넣습니다.dev-dependencies

--save가 npm의 기본 옵션이므로 사용합니다.

npm i package 

그리고 --save-dev의 경우, 저는 사용합니다.

npm i package -D

기본 옵션은 패키지를 프로젝트 종속성으로 설치하고, -D는 테스트, 보풀 등과 같은 개발 종속성을 위해 설치하며, 개발 프로세스를 위해 패키지를 설치합니다.

당신은 여기에서 모든 깃발을 찾을 수 있습니다. https://docs.npmjs.com/cli/v8/commands/npm-install

언급URL : https://stackoverflow.com/questions/22891211/what-is-the-difference-between-save-and-save-dev

반응형