2015-10-25 9 views
10

Ich bin ein Paket.json bauen und verwenden Sie "Npm run", um einige Skripts zu laufen, um genau zu sein, https://docs.npmjs.com/misc/scripts.Verwenden von Umgebungsvariablen in Npm Skripts über Plattformen

Mein Skript müsste einige Umgebungsvariablen erweitern und ich möchte es plattformübergreifend kompatibel machen. Zum Beispiel würde mein Skript sagt

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

Aber es läuft derzeit auf Windows, weil die Ausweitung der Umgebungsvariablen. Linux würde md $npm_package_version\helloworld verwenden.

Gibt es npm kommt mit einem Mechanismus zum Konvertieren von Umgebungsvariablen Erweiterung, so dass es plattformübergreifend funktioniert?

Antwort

4

Um es plattformübergreifend verwenden cross-var:

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

npm scheint keine Cross-Plattform-Weg, um Umgebungsvariablen zu erweitern, aber Sie tun Knoten zur Verfügung haben, so würde ich empfehlen, alle Ihre Skripte als Knoten Skripte Implementierung zugreifen Sie können dann process.env und Cross- Plattform Dateisystemfunktionen, wie 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'); 
+1

„npm doesn‘ t scheinen einen plattformübergreifenden Weg zu haben, e zu erweitern Umweltvariablen "- Ich kam zu demselben Schluss. Hast du zufällig ein Zitat aus den offiziellen Dokumenten? – Pavlo

+4

Am nächsten war ich: https://docs.npmjs.com/misc/config#shell, was erklärt, dass die Standard-Shell unter Windows 'cmd' ist. – morloch

Verwandte Themen