필요한 경우 npm 확인 및 패키지 업데이트
Karma 테스트 러너를 TeamCity에 통합해야하며,이를 위해 sys-engineers에게 다음과 같은 작은 스크립트 (powershell 등)를 제공하고 싶습니다.
일부 구성 파일에서 원하는 버전 번호를 선택하십시오 (나는 그것을 주석으로 넣을 수 있다고 생각합니다
karma.conf.js
)npm의 글로벌 저장소에 정의 된 카르마 러너 버전이 설치되어 있는지 확인
그렇지 않은 경우 또는 설치된 버전이 원하는 것보다 오래된 경우 : 올바른 버전을 선택하여 설치하십시오.
그것을 실행 :
karma start .\Scripts-Tests\karma.conf.js --reporters teamcity --single-run
제 진짜 질문은 "원하는 버전의 패키지가 설치되어 있다면 어떻게 스크립트를 체크인 할 수 있습니까?"입니다. 확인을해야합니까 아니면 npm -g install
매번 전화하는 것이 안전 합니까?
다른 구성 값이 호환되지 않을 수 있기 때문에 항상 사용 가능한 최신 버전을 확인하고 설치하고 싶지 않습니다.
프로젝트의 어떤 모듈이 '이전'인지 확인하려면 :
npm outdated
' 구식 '은 정의 된 모든 모듈을 확인 package.json
하고 NPM 레지스트리에 최신 버전 이 있는지 확인합니다 .
예를 들어, 말 xml2js 0.2.6
(에있는 node_modules
현재 프로젝트) 최신 버전 (0.2.7) 존재하기 때문에 오래된된다. 당신은 볼 것이다 :
xml2js@0.2.7 node_modules/xml2js current=0.2.6
확신이있는 경우 모든 종속성 을 업데이트 하려면 다음이 바람직합니다.
npm update
또는 xml2js
다음 과 같은 단일 종속성을 업데이트하려면
npm update xml2js
npm outdated
업데이트해야 할 패키지를 식별하고 npm update <package name>
각 패키지를 업데이트하는 데 사용할 수 있습니다. 그러나 npm@5.0.0 이전 npm update <package name>
에는 문제가있는 package.json의 버전이 업데이트되지 않습니다.
가장 좋은 워크 플로우는 다음과 같습니다.
- 오래된 패키지 식별
- 패키지의 버전을 업데이트하십시오.
npm update
각 패키지의 최신 버전을 설치하기 위해 실행
npm-check-updates
이 워크 플로에 도움이되도록 확인하십시오 .
- npm-check-updates 설치
npm-check-updates
오래된 패키지를 나열하기 위해 실행하십시오 (기본적으로 running과 동일npm outdated
)npm-check-updates -u
package.json의 모든 버전을 업데이트하려면 실행하십시오 (이것은 마술 소스입니다)npm update
업데이트 된 패키지를 기반으로 새 버전의 패키지를 설치하려면 평소대로 실행하십시오.
"fresh"모듈도 있습니다 npm-check
:
npm-check
오래되고 부정확하며 사용되지 않는 종속성을 확인하십시오.
또한 종속성을 업데이트하는 편리한 대화식 방법을 제공합니다.
단일 로컬 패키지를 업데이트하려면
먼저 오래된 패키지를 찾으십시오.
npm outdated
그런 다음 수동으로 원하는 패키지를 다음과 같이 업데이트하십시오.
npm update --save package_name
이렇게하면 로컬 package.json
파일 을 업데이트 할 필요가 없습니다 .
패키지가 최신 버전으로 업데이트됩니다.
package.json
파일에 일부 버전을 작성 하고 다음을 수행하는 경우 :npm update package_name
이 경우
package.json
파일에 작성한 버전과 관련하여 다음 안정 버전 (원하는)을 얻습니다 .
그리고 npm list (package_name)
로컬 패키지의 현재 버전을 찾을 수 있습니다.
한 가지 쉬운 단계 :
$ npm i -g npm-check-updates && ncu -u && npm i
그게 다야. 의 모든 패키지 버전 package.json
이 최신 버전입니다 .
편집하다:
여기서 무슨 일이 일어나고 있습니까?
업데이트를 확인하는 패키지 설치
이 패키지를 사용하여 모든 패키지 버전을 업데이트하십시오
package.json
(-a는 --updateAll의 약자).새로운 버전의 패키지를 모두 설치하십시오.
오래된 패키지 확인
npm outdated
업데이트 할 패키지 확인 및 선택
npx npm-check -u
일부 종속성 매니페스트 파일의 취약성을 업데이트하거나 수정하기위한 NPM 명령
아래 명령을 사용하여 노드 모듈의 오래된 취약점을 확인하십시오.
npm audit
취약점이 발견되면 아래 명령을 사용하여 모든 문제를 해결하십시오.
npm audit fix
그것이 효과가 없다면 시도해보십시오.
npm audit fix -f
이 명령은 거의 모든 취약점을 해결합니다. 일부 의존성 또는 devDependencies는 package-lock.json 파일에 잠겨 있으므로-f
플래그를 사용 하여 강제로 업데이트합니다.강제 감사 수정을 사용하지 않으려면 package-lock.json 및 package.json 파일 에서 종속성 버전을 변경하여 수동으로 종속성 버전을 수정할 수 있습니다 . 그런 다음`npm update && npm upgrade '를 실행하십시오
npm 패키지를 설치하는 경우 (전역 또는 로컬로) @version
구문을 사용하여 설치할 버전을 정의 하여 특정 버전 을 정의 할 수 있습니다.
다시 말해 :: npm install -g karma@0.9.2
를 수행 하면 0.9.2 만 설치되고 이미 설치되어 있으면 다시 설치되지 않습니다.
충고 한마디로 전 세계 npm 설치를 피하는 것이 좋습니다. 많은 사람들은 종속성이 bin 파일을 정의하면 ./node_modules/.bin/에 설치된다는 것을 인식하지 못합니다. 종종 package.json에 정의 된 설치된 모듈의 로컬 버전을 사용하는 것이 매우 쉽습니다. 실제로 npm 스크립트는 경로에 ./node_modules/.bin을 추가합니다.
예를 들어 다음은 package.json이며, 실행할 때 package.json에 npm install && npm test
정의 된 karma 버전을 설치하고 test
스크립트를 실행할 때 해당 버전의 karma (node_modules / .bin / karma에 설치됨)를 사용합니다 .
{
"name": "myApp",
"main": "app.js",
"scripts": {
"test": "karma test/*",
},
"dependencies": {...},
"devDependencies": {
"karma": "0.9.2"
}
}
이를 통해 package.json이 사용할 카르마 버전을 정의하고 CI 상자에 해당 구성을 전역 적으로 유지할 필요가 없습니다.
오래된 패키지를 확인하고 업데이트 된 패키지를 추가 할 수있는 추가 패키지는 없습니다.
npm install $(npm outdated | cut -d' ' -f 1 | xargs -I '$' echo '$@latest' | xargs echo)
하나의 패키지 만 업데이트하려면 NCU를 설치 한 다음 해당 패키지에 대해서만 NCU를 실행하십시오. 이것은 최신에 부딪 칠 것입니다.
npm install -g npm-check-updates
ncu -f your-intended-package-name -u
현재로 npm@5.0.0+ 당신이 간단하게 할 수 있습니다 :
npm update <package name>
파일 이 자동으로 업데이트 package.json
됩니다. 최신 버전을 수동으로 업데이트 한 다음 사용할 필요가 없습니다npm update <package name>
여전히 다음을 사용하여 이전 동작을 얻을 수 있습니다.
npm update --no-save
( 참조 )
참고 URL : https://stackoverflow.com/questions/16525430/npm-check-and-update-package-if-needed
'Programing' 카테고리의 다른 글
리눅스 명령 줄에서 여러 파일의 문자열을 바꾸는 방법 (0) | 2020.02.25 |
---|---|
가장 가까운 문자열 일치 (0) | 2020.02.25 |
xcopy 파일, 이름 바꾸기,“xxx는 파일 이름을 지정합니까…”메시지를 억제합니다 (0) | 2020.02.25 |
ASP.NET 웹 API를 보호하는 방법 (0) | 2020.02.25 |
익명 클래스의 일반적인 목록 (0) | 2020.02.23 |