2016-09-05 5 views
0

Ich habe npm Skript wie dieses Passing Parameter npm run Script-Befehl

"scripts": { 
    "compress": "uglifyjs src/script.js -o src/script.js" 
} 

definiert, die ich durch den Befehl npm run compress ausführen können.

Ich möchte den Namen des Basisordner dh ‚src‘ dynamisch machen, so kann ich den Basisordnernamen als param passieren, während das Skript ausgeführt wird, so etwas wie

npm run compress --base_folder=src 

Skript

laufen
"compress": "uglifyjs ${base_folder}/script.js -o ${base_folder}/script.js" 
+0

Mögliche Duplikate von [Senden Befehlszeilenargumente zu Npm-Skript] (http://StackOverflow.com/Questions/11580961/Sending-Command-Line-Argumente-To-Npm-Script) – mic4ael

+0

Ich überprüfte diese Frage, aber ich will ein param als string in mein Kommando in Skripte einbetten – FarazShuja

+0

Siehe die Antwort unter http://stackoverflow.com/questions/35221098/passing-arguments-to-npm-script-in-package-json – aleung

Antwort

0

Die beste Option wird die Verwendung von Umgebungsvariablen sein, weil npm so komplizierte Logik nicht unterstützt. Auf der anderen Seite bieten Umgebungsvariablen eine ähnliche Funktionalität.

Befehl:

base_folder=src npm run compress 

package.json:

"compress": "uglifyjs $base_folder/script.js -o $base_folder/script.js" 
+0

Fehler: kann nicht lese Datei: $ base_folder/script.js – FarazShuja

+0

@FarazShuja verwendest du Linux/macOS? –

+0

Was passiert, wenn Sie den folgenden Befehl 'TEST = foo && echo $ TEST' ausführen? –

0

Sie benötigen npm-config. Verwenden Sie $npm_config_base_folder in package.json:

"scripts": { 
    "compress": "uglifyjs $npm_config_base_folder/script.js -o $npm_config_base_folder/script.js" 
} 

Dann npm run compress --base_folder=src auszuführen.

+0

FEHLER: Datei kann nicht gelesen werden: $ npm_config_base_folder/script.js – FarazShuja