Jak Mogę określić wymagany węzeł.wersja js w pakietach.json?

Mam węzeł.projekt js, który wymaga węzła w wersji 12 lub wyższej. Czy istnieje sposób na określenie tego w pakietach.plik json, dzięki czemu instalator automatycznie sprawdzi i poinformuje użytkowników o konieczności aktualizacji?

Author: Erel Segal-Halevi, 2015-03-30

4 answers

Myślę, że możesz użyć pola "silniki":

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

Ponieważ twierdzisz, że Twój kod na pewno nie będzie działał z żadnymi niższymi wersjami, prawdopodobnie chcesz też flagę "engineStrict":

{ "engineStrict" : true }

Dokumentacja dla pakietów.plik json można znaleźć na stronie npmjs

Update

engineStrict jest teraz przestarzały, więc będzie to tylko Ostrzeżenie. Teraz użytkownik musi uruchomić npm config set engine-strict true, jeśli tego chce.

 113
Author: IBam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-24 10:08:38

Tak jak powiedział Ibam, engineStrict jest teraz przestarzały. Ale znalazłem takie rozwiązanie:

Sprawdź-wersja.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);
}

Paczka.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"
  }
}

Dowiedz się więcej tutaj: https://medium.com/@adambisek/how-to-check-minimum-required-node-js-version-4a78a8855a0f#.3oslqmig4

.nvmrc

I jeszcze jedno... Dotfile".nvmrc ' może być używany do wymagania określonej wersji węzła (ale nie próbowałem jeszcze) - https://github.com/creationix/nvm#nvmrc
 26
Author: Adam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 08:02:10

Dodaj

Do package.json

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

Do pliku .npmrc (blisko package.json, tego samego katalogu)

engine-strict=true
 10
Author: Mikel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-11 13:13:49

Jest inny, prostszy sposób na to:

  1. npm install Node@8 (zapisuje węzeł 8 jako zależność w pakiecie.json)
  2. Twoja aplikacja będzie działać za pomocą węzła 8 dla każdego - nawet użytkowników przędzy!

To działa, ponieważ {[1] } jest tylko pakietem, który wysyła węzeł jako swój pakiet binarny. Zawiera tylko node_module/.bin, co oznacza, że węzeł jest dostępny tylko dla skryptów pakietu. Nie główna powłoka.

Zobacz dyskusję na Twitterze tutaj: https://twitter.com/housecor/status/962347301456015360

 1
Author: vnglst,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-11 13:45:43