Переменная среды доступа в package.json

Чтобы получить доступ к переменной среды в сценариях npm, вы сделаете что-то вроде этого в своем package.json:

"scripts": {
    "preinstall": "echo ${npm_package_name}"
}

Проблема заключается в том, что работает только в Unix, а не в Windows, где вам нужно использовать %npm_package_name%.

Есть ли способ сделать эту ОС независимой? Будет полезно, если npm может сделать такое расширение переменной, прежде чем вызывать команду.

Ответ 1

Чтобы сделать его кросс-платформенным, используйте cross-var:

"scripts": {
    "preinstall": "cross-var echo ${npm_package_name}"
}

Ответ 2

Нет никакого известного способа сделать это независимым от ОС.

Хорошим обходным решением является выполнение команды в node script:

Сначала измените команду preinstall, чтобы выполнить node script:

"scripts": {
    "preinstall": "node nameEcho.js"
}

Затем вы определяете команду в файле nameEcho.js:

// require the package.json file
var pjson = require('./package.json');

// echo the package name
console.log(pjson.name);