2016-03-28 24 views
10

Um eine Umgebungsvariable in npm Skripte zugreifen würden Sie so etwas wie dies in Ihrem package.json tun:Zugang Umgebungsvariable in package.json

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

Das Problem ist, dass nur in Unix arbeitet, nicht auf Windows, wo man zu verwenden %npm_package_name%.

Gibt es eine Möglichkeit, dieses Betriebssystem unabhängig zu machen? Es wäre gut, wenn npm vor dem Aufruf des Befehls eine solche variable Erweiterung durchführen könnte.

+1

Was nützt das Zugreifen auf Umgebungsvariablen hier? Kann ich in anderen Teilen von package.json auf sie zugreifen, z. B. im Abschnitt "Abhängigkeiten"? – Michael

Antwort

16

Um es plattformübergreifend verwenden cross-var:

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

Es gibt keine bekannte Möglichkeit, dies zu tun, die unabhängig vom Betriebssystem ist.

Eine gute Abhilfe ist, den Befehl innerhalb eines Knotens Skript auszuführen:

Erstens ändern sich die preinstall Befehl einen Knoten Skript auszuführen:

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

Dann Sie den Befehl in der nameEcho definieren. js Datei:

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

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