2015-12-01 3 views
4

Случай 1: имя переменной используется вместо значенияНПМ скрипты - конфигурационные переменные и подстановки команды не работают в package.json

package.json: 

{ 
    "name": "example", 
    "config": { 
    "url": "localhost/dev" 
    }, 
    "scripts": { 
    "watch": "browser-sync start --files \"./**/*, !.node_modules/, !src\" --proxy $npm_package_config_url" 
    } 
} 

$npm run watch открывает http://localhost:3000/$npm_package_config_url в браузере, вместо http://localhost:3000/dev

Так , $npm_package_config_url используется как строка, а не как переменная.

Случай 2: команда замена не работает

{ 
    { ... }, 
    "scripts": { 
    "rm:all": "npm rm $(ls -1 node_modules | tr '/\\n' ' ')" 
    } 
} 

подкомандой списки папок в node_modules.

Опять же, npm run rm:all ничего не делает, потому что $(ls -1 node_modules | tr '/\\n' ' ') интерпретируется как имя папки.

ENV: окна 10 | npm 3.5.1 | узел 4.2.2 | ГИТ-Баш 2.6.0

ответ

5

Немного поздно, но на Windows, вам нужно использовать %npm_package_config_url%

Там есть потенциал пакет, который будет «исправить» это для вас (то есть дать вам обходной) (https://www.npmjs.com/package/cross-env) на который ссылались в одном из сообщений о проблеме в нпс.

+0

cross-env поможет переменным среды _setting_ перекрестная платформа, если вы хотите переменные среды _use_ в ваших сценариях в кросс-платформенном режиме, используйте [cross-var] (http://npm.im/cross-var) – kentcdodds