Использование переменных среды в сценариях npm на разных платформах

Я создаю package.json и использую "npm run" для запуска некоторых скриптов, в точности, https://docs.npmjs.com/misc/scripts.

My script должен будет расширить некоторые переменные среды, и я хочу сделать его совместимым с платформой. Например, мой script сказал бы

"scripts": { "build": "md %npm_package_version%\helloworld" }

Но он в настоящее время работает в Windows, потому что расширение переменных среды. Linux будет использовать md $npm_package_version\helloworld.

Имеет ли npm механизм для преобразования расширения переменных среды, чтобы он работал на разных платформах?

Ответ 1

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

"scripts": {
  "build": "cross-var md %npm_package_version%\helloworld"
}

Ответ 2

npm, похоже, не имеет межплатформенного способа расширения переменных окружения, но у вас есть node, поэтому я бы рекомендовал реализовать все ваши скрипты как скрипты node, тогда вы можете доступ process.env и функции межплатформенной файловой системы, такие как mkdirSync.

package.json

"scripts": {
  "build": "node utils/mdkir.js"
}

Utils/mkdir.js

'use strict';

var fs = require('fs');

fs.mkdirSync(process.env.npm_package_version + '/helloworld');