lockfileVersion sonpm에서 특정 형식을 사용하여 package-lock.json을 수정할 수 있는 방법이 있습니까?
의 다른 개발자들이 원래 15)와의 다른 , 이 프로젝트는 node(12/15)와 npm(6/7)을 사용합니다.package-lock.json
"lockfileVersion": 1
를 사용하는 패키지를 할 때 npm 7x를 사용하는 .package-lock.json
를 사용하여 다시 생성됩니다."lockfileVersion": 2
.
은 npm v6를 , npm v6를 하는 개발자에게 문제가 되는 것 .lockfileVersion 2
하지만 결국 새로운 차이를 만들어냅니다.
npm WARN 읽기-축소 랩 이 버전의 npm은 lockfileVersion@1과 호환되지만 lockfileVersion@2에 대해 package-lock.json이 생성되었습니다.최선을 다해 보겠습니다!
의 최신 버전으로 지정할 수 있는 방법이 있습니까?npm
오로지 사용하기 위해"lockfileVersion": 1
아니면 모든 개발자를 동일한 버전의npm
?
의 최신 버전으로 지정할 수 있는 방법이 있습니까?
npm
오로지 사용하기 위해"lockfileVersion": 1
아니면 모든 개발자를 동일한 버전의npm
?
Node/NPM 버전을 고정하고 환경(개발, 스테이징 및 프로덕션)에 맞게 조정하는 것이 좋습니다.
프로젝트 파일에 추가하여 노드 버전을 관리할 수 있습니다(소스 컨트롤에 저장하는 것을 잊지 마십시오).
를 들어, 예를들어어입니다..nvmrc
다음과 같이 표시됩니다.
$ cat .nvmrc
14.15.0
그러면, 당신은 사용할 수 있습니다.nvm install && nvm use
고정된 버전의 노드를 사용합니다.
NPM은 또한 다음을 지원합니다.
항목이 작동하는 노드의 버전을 지정할 수 있습니다.
{ "engines" : { "node" : ">=0.10.3 <0.12" } }
또한 종속성과 마찬가지로 버전을 지정하지 않은 경우(또는 "*"를 버전으로 지정한 경우) 노드의 모든 버전이 사용할 수 있습니다.
"엔진" 필드를 지정할 경우, npm은 "노드"가 해당 목록의 어딘가에 있어야 합니다."엔진"이 생략되면 npm은 노드에서 작동하는 것으로 가정합니다.
또한 "엔진" 필드를 사용하여 프로그램을 올바르게 설치할 수 있는 npm 버전을 지정할 수 있습니다.예:
{ "engines" : { "npm" : "~1.0.20" } }
사용자가 엔진 엄격 구성 플래그를 설정하지 않은 경우 이 필드는 권장 사항일 뿐이며 패키지가 종속성으로 설치된 경우에만 경고를 생성합니다.
를 할 때engines
필드 앤드 메이크npm
조건이되지 않을 때합니다. 를 설정합니다.engine-strict=true
(기본값이므로) 파일 또는 환경 변수로
true로 설정하면 npm은 현재 Node.js 버전과 호환되지 않는다고 주장하는 패키지의 설치를 완강히 거부하거나 설치를 고려합니다.
--force 플래그를 설정하여 이 값을 재정의할 수 있습니다.
또 다른 접근 방식은 개발 및 실행을 위한 런타임 환경으로 Docker 컨테이너를 사용하는 것입니다. 이는 Node나 NPM을 설치할 필요가 없다는 것을 의미합니다.
$ mkdir my-project
$ cd my-project
$ docker run --rm -it -v $PWD:/app --entrypoint /bin/bash --workdir /app node:14.15.0
root@4da6ee3c2ac0:/app# npm init -y
Wrote to /app/package.json:
{
"name": "app",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
root@4da6ee3c2ac0:/app# npm install
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN app@1.0.0 No description
npm WARN app@1.0.0 No repository field.
up to date in 1.694s
found 0 vulnerabilities
root@4da6ee3c2ac0:/app# exit
exit
$ ls -x1
package-lock.json
package.json
보다시피 노드나 NPM이 없는 경우:
- 새 프로젝트를 위한 새 디렉터리를 만들었습니다.
- Node 및 NPM과 함께 제공되는 Node Docker 컨테이너 스핀업
- 프로젝트를 .
npm init -y
) - 도커 컨테이너를 종료했습니다.
- 컨테이너가 회전된 작업 디렉토리 내의 파일 나열
docker run
위의 명령은 길기 때문에 더 능률적인 워크플로우를 위해 도커-프로파일링을 활용할 수 있습니다.
npm WARN 읽기-축소 랩 이 버전의 npm은 lockfileVersion@1과 호환되지만 lockfileVersion@2에 대해 package-lock.json이 생성되었습니다.최선을 다해 보겠습니다!
이 문제를 해결하려면 명령 실행
npm i -g npm@latest
전체적으로 및 명령 실행
npm i npm@latest
프로젝트 파일에서 문제를 해결하는 데 도움이 되었습니다.
전기 준 기준8.1.0
▁flag다있▁a▁is▁there니라는 깃발이 있습니다.--lockfile-version
npm
기본 잠금 파일 버전을 재정의할 수 있습니다.
npm i --lockfile-version 3
하지 않고 .--package-lock-only
npm i --lockfile-version 3 --package-lock-only
제가 보기에는 npm 문서에 따르면 npm v6는 경고에도 불구하고 버전 2 잠금 파일로 작동하므로 승인된 답변에서 제안된 작업을 수행할 필요가 없으며 경고 메시지를 무시해도 됩니다.
한 가지 주목해야 할 변경 사항은 npm 6 사용자와 역호환되는 새로운 잠금 파일 형식입니다.잠금 파일 v2는 패키지 트리를 생성하기 위해 결정론적이고 재현 가능한 빌드를 수행하는 기능을 잠금 해제합니다.
npm 문서에는 다음과 같이 나와 있습니다(제가 강조합니다).
lockfileVersion
이 package-lock.json을 생성할 때 의미론이 사용된 이 문서의 버전 번호로 시작하는 정수 버전입니다.
npm v7에서는 node_modules 또는 npm 레지스트리를 검색해야 하는 정보를 추적하기 위해 파일 형식이 크게 변경되었습니다.npm v7에서 생성한 잠금 파일에 잠금 파일 버전 2가 포함됩니다.
- 제공된 버전 없음: npm v5 이전 버전의 "고대" 축소 랩 파일입니다.
- 1: npm v5 및 v6에서 사용하는 잠금 파일 버전입니다.
- 2: npm v7에서 사용하는 잠금 파일 버전으로, v1 잠금 파일과 역호환됩니다.
- 3: 이전 버전과의 호환성이 없는 npm v7에서 사용하는 잠금 파일 버전입니다.이는 node_modules/.package-lock.json의 숨겨진 잠금 파일에 사용되며, npm v6에 대한 지원이 더 이상 관련이 없는 경우 npm의 향후 버전에서 사용될 가능성이 높습니다.
그렇기 때문에 잠금 파일을 v1에서 v2로 자동 업그레이드할 수 있습니다. 여기서 언급한 바와 같습니다.
사용하는 것보다 훨씬 더 간단한 솔루션이 있습니다.nvm
:
npx npm@6.14.17 i --save
이를 통해 버전 1로 새 잠금 파일을 생성하고 최신 노드 js 버전을 사용할 수 있으며 시스템에서 아무것도 변경할 필요가 없습니다.
저는 오늘 같은 문제에 직면했습니다.와 다른 의 프로젝트를 .npm
(>7)과 저는 같은 문제에 부딪혔습니다.간단히 업그레이드했습니다.npm
위에서 언급한 대로 다른 개발자가 사용하던 최신 버전의 버전입니다.은 다음업드단다니계를 하는 입니다.npm
(창구용):
먼, 시에서다에서 다음 할 수 합니다.PowerShell
실행하기PowerShell
~하듯이Administrator
딸깍하는 소리Start
를 PowerShell
마우스 버튼을 클릭합니다.PowerShell
를 선택합니다.Run as Administrator
.
다음 명령을 실행합니다.
Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force
다음 이 도구를 하려면 다음▁from▁an,▁(▁then▁elevated(지▁run▁the다also가마▁to▁tool▁and,▁upgr).PowerShell
또는cmd.exe
:). 참고:이 도구에는 적어도 다음이 필요합니다.Node v8
npm install --global --production npm-windows-upgrade
npm-windows-upgrade
최신 버전만 설치하시겠습니까?물론:
npm-windows-upgrade --npm-version latest
이제 명령줄에서 설치할 버전을 선택할 수 있습니다.
https://github.com/felixrieseberg/npm-windows-upgrade
위 링크는 제가 사용한 도구입니다.이 도구는 Linux/Windows용입니다.도움이 되길 바랍니다.
잠금 파일 구성은 npm 버전에 따라 다릅니다.v7+는 잠금 파일 2를 생성하고, 아래는 잠금 파일 v1을 생성합니다.
잠금 파일 v2는 이전 버전과 호환되므로 npm < v6를 실행하는 사람들은 사용해도 괜찮지만, 제 두 번째 화면에서 서클ci 빌드 오류를 보고 있습니다. 이는 우리가 사용하는 일부 npm 패키지가 잠금 파일 v2와 호환되지 않는다는 것을 암시합니다. 즉, 오래된 npm 패키지가 잠금 파일 v2와 잘 유지되지 않고 호환되지 않을 수 있습니다.
따라서 환경을 강화하고 격리하는 것이 가장 좋은 방법일 것입니다.
이것이 도커가 발명된 이유입니다!도커 컨테이너에서 프로젝트를 실행한 다음 makefile 명령을 사용하여 프로젝트를 빌드할 수 있습니다.
.PHONY: up
up:
$(MAKE) down
docker-compose up -d
$(MAKE) logs
프로젝트를 설정하기 위한 작성 파일을 사용한 다음 사용make <insert command>
프로젝트를 실행/구축할 수 있습니다.하나의 명령은 다음과 같습니다.make shell
모든 개발자의 npm/노드 버전이 동일한 셸 환경에 들어갑니다. npm i -g npm@latest
실행되는 모든 곳에 npm을 설치하기 때문에 이에 대한 답은 아닙니다. 따라서 새로운 개발자들은 빌드의 일부가 아닌 한 여전히 해당 명령을 실행해야 합니다.
제거시를 제거해 .package-lock.json
그리고 실행npm install
한 번
언급URL : https://stackoverflow.com/questions/64813775/is-there-any-way-to-fix-package-lock-json-lockfileversion-so-npm-uses-a-specific
'UFO ET IT' 카테고리의 다른 글
Angular 4+ ngOnDestroy() 서비스 중 - 파괴 가능 (0) | 2023.05.13 |
---|---|
Microsoft Windows용 터미널 멀티플렉서 - GNU Screen 또는 tmux용 설치 프로그램 (0) | 2023.05.13 |
배치 파일에서 파일을 삭제할 때 "Y/N 확인"을 건너뛰는 방법 (0) | 2023.05.13 |
Mongoose 하위 문서 찾기/업데이트 (0) | 2023.05.13 |
시스템 변환.목록에 배열 (0) | 2023.05.13 |