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?
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.
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#nvmrcWarning: 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
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:
-
npm install Node@8
(zapisuje węzeł 8 jako zależność w pakiecie.json) - 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
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