npm이 package-lock.json을 생성하도록 강제하는 방법이 있습니까?


132

실수로 삭제했고 그 package.json이후 로 많은 부분을 변경했습니다 . 안npm install또는 npm update생성하지 않습니다 package-lock.json더 이상. 내 npm 캐시와 nvm 캐시를 지우려고 시도했지만 아무것도 작동하지 않는 것 같습니다. 여러 버전의 Node.js (6.10.3 Node.js-3.10.10 npm이 내가 작업하기를 바라는 것임)에서 시도했지만 아무 것도 작동하지 않습니다.

npm이 package-lock.json파일 을 생성하도록 강제하는 방법이 있습니까?


2
package-lock.json이 npm 5에만 해당한다고 생각합니다
Brett Merrifield

3
package-lock.jsonv5부터는 기본적으로 npm에서 자동으로 생성되며, 이전 버전에서는 잠금 파일 이름이었고 명령을 npm-shrinkwrap.json사용하여 수동으로 생성되었습니다 npm shrinkwrap.
alexmac

@BrettMerrifield 감사합니다! 그게 내 문제였습니다. 나는 node 8.6.0그것과 함께 업데이트했고 npm 5.3.0작동했습니다.
Big Money

귀하의 확인 .gitignore. 내가 실수했다 package-lock.json.gitignore어떻게 든하고 있기 때문에 package-lock.json에 표시되지 않은 git status그 날을 던지고.
Joshua Pinter

답변:


155

기본적 package-lock.json으로는를 실행할 때마다 업데이트됩니다 npm install. 그러나에서 설정 package-lock=false하여 전역 적으로 비활성화 할 수 있습니다 ~/.npmrc.

전역 package-lock=false설정이 활성화 된 경우 다음 package-lock.json을 실행 하여 프로젝트 파일을 강제 로 업데이트 할 수 있습니다.

npm install --package-lock

이 명령은 package-lock.json업데이트 를 강제하는 유일한 확실한 방법입니다 .


@RonNewcomb 더 많은 정보를 공유 할 수 있습니까? "작동하지 않는다"는 것은 무엇을 의미합니까? 어떤 npm 버전을 사용하고 있습니까?
Mathias Bynens

npm 버전 3.10.10 노드 6.10.3 나열한 명령이 작동하지 않는 것 같습니다. 아무 반응이 없습니다. 오류, 파일 변경, 아무것도 없습니다.
Ron Newcomb

2
프로젝트에 npm v3를 사용하는 경우 package-lock.json. package-lock.jsonnpm v5 +에서만 지원됩니다.
Mathias Bynens

8
NPM V 6.4.1이 패키지-lock.json 작성하지 않습니다
mjuopperi

1
6.4.1에서 작동합니다. false로 설정하면 생성되지 않습니다.
Kevin B

94

npm 6.x에서는 다음을 사용할 수 있습니다.

npm i --package-lock-only

https://docs.npmjs.com/cli/install.html 에 따르면

--package-lock-only 인수는 node_modules를 확인하고 종속성을 다운로드하는 대신 package-lock.json 만 업데이트합니다.


12
이것은 이제 정답입니다. 다른 사람들은 오래되어 작동하지 않습니다.
Vaibhav Singh 19

devDependencies없이 package-lock.json을 생성하는 방법에 대한 단서가 있습니까? 깨끗한 프로덕션 설치를 위해 필요합니다. npm i --package-lock-only --only=production작동하지 않는 것 같습니다.
Robert

package-lock.json프로덕션 종속성에 대해서만 생성 할 수 있다고 생각하지 않습니다 . 그러나 실행 npm i --only=production하면 프로덕션 종속성 만 설치해야합니다. 따라서 빌드 프로세스는 다음과 같을 수 있습니다. 모든 종속성 설치, 앱 빌드, node_modules프로덕션 종속성 만 제거 및 설치.
Janusz Przybylski

14

이것은 의견에서 대답합니다. v5 이상의 package-lock.json기능입니다 npm. npm shrinkwrap의 모든 버전에서 잠금 파일을 만드는 방법입니다 npm.


1
그러나 package-lock.jsons는 수축 포장 파일과 똑같은 것은 아닙니다.
strugee

7
npm 5+에서는 한 가지를 제외하고는 모든 세부 사항까지 정확히 동일 npm-shrinkwrap.json합니다. 레지스트리에 게시되고 게시 package-lock.json되지 않습니다.
LJHarb

6
네. 그것은 꽤 중요한 차이입니다. 그래서 제가 코멘트를 남겼습니다.
strugee

1
npm shrinkwrap생성 npm-shrinkwrap.json하지만 어떻게 생성 package-lock.json합니까?
Vic

5
그것은 5+ NPM 자동, 또는 당신과 함께 5+에 강제 할 수 있습니다--package-lock
LJHarb

1

여러 답변에서 설명했듯이 다음을 실행해야합니다.

npm i

하지만 해결 되지 않으면 ...

npm실행 파일 의 버전을 확인하십시오 . (저에게는 package-lock.json(전혀) 사용하지 않는 3.xx였습니다 )

npm -v

5.xx 이상 이어야합니다 ( package-lock.json 파일 도입 ).

Lunix에서 npm을 업데이트하려면 다음 지침을 따르십시오 .

패키지 파일에 대한 자세한 내용은 이 매체 스토리 를 읽어보세요 .


0

귀하의 경우 NPM 버전이 낮은 이상의 버전 5 다음의 자동 생성을 얻기 위해 더 높은 버전을 설치 패키지 lock.json을 .

예 : 현재 npm 을 버전 6.14.0으로 업그레이드

npm i -g npm@6.14.0

최신 npm 버전 목록 은 다음과 같이 볼 수 있습니다.

npm view npm versions

-3

package-lock.json은를 실행할 때마다 다시 생성됩니다 npm i.


13
이는 node및의 특정 버전에만 해당됩니다 npm. 나는 그것이 npm> = 5.0node> = 라고 생각 7.0하지만 100 % 확신하지는 않습니다. 그것은 node 6.11.3나를 위해 작동하지 않습니다 .
Thor84no

2
npm 구성에서 package-lock이 false로 설정된 경우에도 true가 아닙니다. 'npm 구성 목록'을 사용하여 확인
Damo

npm이 node_modules 트리 또는 package.json을 수정하는 모든 작업에 대해 package-lock.json이 자동으로 생성됩니다. docs.npmjs.com/files/package-lock.json에 따라 . 그러나 npm 버전은 지정되지 않았습니다.
NanoNova
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.