Programing

필요한 경우 npm 확인 및 패키지 업데이트

lottogame 2020. 2. 25. 21:59
반응형

필요한 경우 npm 확인 및 패키지 업데이트


Karma 테스트 러너를 TeamCity에 통합해야하며,이를 위해 sys-engineers에게 다음과 같은 작은 스크립트 (powershell 등)를 제공하고 싶습니다.

  1. 일부 구성 파일에서 원하는 버전 번호를 선택하십시오 (나는 그것을 주석으로 넣을 수 있다고 생각합니다 karma.conf.js)

  2. npm의 글로벌 저장소에 정의 된 카르마 러너 버전이 설치되어 있는지 확인

  3. 그렇지 않은 경우 또는 설치된 버전이 원하는 것보다 오래된 경우 : 올바른 버전을 선택하여 설치하십시오.

  4. 그것을 실행 : 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의 버전이 업데이트되지 않습니다.

가장 좋은 워크 플로우는 다음과 같습니다.

  1. 오래된 패키지 식별
  2. 패키지의 버전을 업데이트하십시오.
  3. npm update각 패키지의 최신 버전을 설치하기 위해 실행

npm-check-updates이 워크 플로에 도움이되도록 확인하십시오 .

  • npm-check-updates 설치
  • npm-check-updates오래된 패키지를 나열하기 위해 실행하십시오 (기본적으로 running과 동일 npm outdated)
  • npm-check-updates -upackage.json의 모든 버전을 업데이트하려면 실행하십시오 (이것은 마술 소스입니다)
  • npm update업데이트 된 패키지를 기반으로 새 버전의 패키지를 설치하려면 평소대로 실행하십시오.

"fresh"모듈도 있습니다 npm-check:

npm-check

오래되고 부정확하며 사용되지 않는 종속성을 확인하십시오.

여기에 이미지 설명을 입력하십시오

또한 종속성을 업데이트하는 편리한 대화식 방법을 제공합니다.


  • 단일 로컬 패키지를 업데이트하려면

    1. 먼저 오래된 패키지를 찾으십시오.

      npm outdated

    2. 그런 다음 수동으로 원하는 패키지를 다음과 같이 업데이트하십시오.

      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이 최신 버전입니다 .

편집하다:

여기서 무슨 일이 일어나고 있습니까?

  1. 업데이트를 확인하는 패키지 설치

  2. 이 패키지를 사용하여 모든 패키지 버전을 업데이트하십시오 package.json(-a는 --updateAll의 약자).

  3. 새로운 버전의 패키지를 모두 설치하십시오.


오래된 패키지 확인

npm outdated

업데이트 할 패키지 확인 및 선택

npx npm-check -u

npm oudated img

npx npm-check -u img


일부 종속성 매니페스트 파일의 취약성을 업데이트하거나 수정하기위한 NPM 명령

  • 아래 명령을 사용하여 노드 모듈의 오래된 취약점을 확인하십시오.

    npm audit

  • 취약점이 발견되면 아래 명령을 사용하여 모든 문제를 해결하십시오.

    npm audit fix

  • 그것이 효과가 없다면 시도해보십시오.

    npm audit fix -f이 명령은 거의 모든 취약점을 해결합니다. 일부 의존성 또는 devDependencies는 package-lock.json 파일에 잠겨 있으므로 -f플래그를 사용 하여 강제로 업데이트합니다.

  • 강제 감사 수정을 사용하지 않으려면 package-lock.jsonpackage.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



반응형