IT story

package.json에서 필요한 Node.js 버전을 지정하려면 어떻게해야합니까?

hot-time 2020. 5. 26. 07:49
반응형

package.json에서 필요한 Node.js 버전을 지정하려면 어떻게해야합니까?


Node 버전 12 이상이 필요한 Node.js 프로젝트가 있습니다. packages.json 파일에서이를 지정하여 설치 프로그램이 사용자에게 업그레이드해야하는지 자동으로 확인하고 알리도록하는 방법이 있습니까?


"엔진"필드를 사용할 수 있다고 생각합니다.

{ "engines" : { "node" : ">=0.12" } }

코드가 하위 버전에서 작동하지 않는다고 말하면 "engineStrict"플래그도 원할 것입니다.

{ "engineStrict" : true }

package.json 파일에 대한 설명서 는 npmjs 사이트 에서 찾을 수 있습니다.

최신 정보

engineStrict더 이상 사용되지 않으므로 경고 만 표시됩니다. npm config set engine-strict true원하는 경우 사용자가 실행 해야합니다.


더하다

package.json

  "engines": {
    "node": ">=10.0.0",
    "npm": ">=6.0.0"
  },

파일에 .npmrc( package.json같은 디렉토리에 가까운 )

engine-strict=true

Ibam engineStrict말했듯 이 이제는 더 이상 사용되지 않습니다. 그러나이 솔루션을 찾았습니다.

check-version.js :

import semver from 'semver';
import { engines } from './package';

const version = engines.node;
if (!semver.satisfies(process.version, version)) {
  console.log(`Required node version ${version} not satisfied with current version ${process.version}.`);
  process.exit(1);
}

package.json :

{
  "name": "my package",
  "engines": {
    "node": ">=50.9" // intentionally so big version number
  },
  "scripts": {
    "requirements-check": "babel-node check-version.js",
    "postinstall": "npm run requirements-check"
  }
}

자세한 내용은 https://medium.com/@adambisek/how-to-check-minimum-required-node-js-version-4a78a8855a0f#.3oslqmig4 에서 확인하십시오.

.nvmrc

그리고 한 가지 더. dotfile '.nvmrc의 특정 노드 버전을 필요로 사용할 수 있습니다 - https://github.com/creationix/nvm#nvmrc

그러나 npm 스크립트 (및 원사 스크립트)만이 존중됩니다.


.nvmrc

이처럼 NVM사용하고 있다면 주어진 프로젝트에 필요한 nodejs 버전을 git-tracked .nvmrc파일로 나타낼 수 있습니다 .

echo v10.15.1 > .nvmrc

이것은 cd제정신 에 자동으로 적용되지 않습니다 . 사용자는 다음을 수행해야합니다.

nvm use

이제 해당 버전의 노드가 현재 쉘에 사용됩니다.

가지고있는 노드의 버전을 나열 할 수 있습니다.

nvm list

.nvmrchttps://github.com/creationix/nvm/tree/02997b0753f66c9790c6016ed022ed2072c22603#nvmrc에 문서화되어 있습니다.

NVM 0.33.11로 테스트되었습니다.


이 작업을 수행하는 또 다른 간단한 방법이 있습니다.

  1. npm install Node@8 (노드 8을 package.json의 종속성으로 저장)
  2. 여러분의 앱은 누구든지 노드 8을 사용하여 실행됩니다 – 심지어 원사 사용자들!

이것은 node노드를 패키지 바이너리로 제공하는 패키지 일뿐 이므로 작동합니다 . node_module / .bin 만 포함하면 스크립트를 패키징 할 수있는 노드 만 만들 수 있습니다. 메인 쉘이 아닙니다.

https://twitter.com/housecor/status/962347301456015360 에서 트위터에 대한 토론을 참조하십시오.


모카 테스트 사례 예 :

describe('Check version of node', function () {
    it('Should test version assert', async function () {

            var version = process.version;
            var check = parseFloat(version.substr(1,version.length)) > 12.0;
            console.log("version: "+version);
            console.log("check: " +check);         
            assert.equal(check, true);
    });});

참고URL : https://stackoverflow.com/questions/29349684/how-can-i-specify-the-required-node-js-version-in-package-json

반응형