2016-11-03 2 views
2

В моем файле package.json я пытаюсь скомпилировать меньше кода с помощью управления версиями, что-то вроде этого:Переменные среды NPM не работают в окнах?

"scripts" { 
... 
"build:css": "lessc --source-map css/index.less build/$npm_package_name.$npm_package_version.css", 
... 
} 

Проблема заключается в том, что выходные файлы возвращаются в

$npm_package_name.$npm_package_version.css 

вместо

my-project.1.0.0.css 

Я читал, что вы можете сделать

%npm_package_name%.%npm_package_version%.css 

но это не сработало для меня.

Кто-нибудь знает, почему переменные не работают? Эти переменные работают вообще в Windows? Если да, то как мне заставить их работать?

+0

В чем вопрос? –

+0

Почему переменные не работают/не работают переменные в Windows/как заставить их работать? Обновлено в вопросе – aaronmcavinue

+0

Я думаю, вам было бы лучше использовать 'gulp' и получить переменные env с' process.env', а не иметь скрипты, зависящие от ОС на вашем 'package.json' – BrunoLM

ответ

1

Это package.json работает для меня на Windows 10:

{ 
    "name": "x", 
    "version": "1.0.0", 
    "description": "", 
    "main": "index.js", 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1" 
    }, 
    "author": "", 
    "license": "Unlicense" 
} 

Однако обратите внимание, что подстановка переменной среды происходит после того, как его было вторит НПМ, так что результат выглядит следующим образом:

C:\try\x>npm test 

> [email protected] test C:\try\x 
> echo %npm_package_name%.%npm_package_version%.css 

x.1.0.0.css 
+0

Ах да, очень полезно. Проблема заключалась в том, что я использовал git bash (unix-based), а не cmd.exe. Ура! – aaronmcavinue

1

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

"scripts" { ... "build:css": "cross-var lessc --source-map css/index.less build/$npm_package_name.$npm_package_version.css", ... }

Смежные вопросы