2017-09-14 1 views
2

Mein Workflow ist Npm-Skripte, Ausführen von Befehlen in meinem node_module zusammen mit einfachen Shell-Befehle.Wie verwenden Backticks in Npm-Skripten auf Windows

Leider macht es dies für Windows-Benutzer schwierig, weil ich in einigen Befehlen Backticks verwende (siehe Beispiel unten). Ich habe eine Pull-Anfrage, die freiwillig zu konvertieren, um shellJS/shx für meine Build, so dass mein Repo plattformübergreifend erstellen wird, aber wir können nicht eine Lösung für Backticks in NPM-Skripte.

Frage:

  • Welche Shell npm nicht verwendet? Unter Windows scheint es keine Backticks zu unterstützen.
  • Gibt es einen Workaround? Piping hilft nicht, ach, rm, mkdir usw. benutzen nicht stdin.

Beispiel Graviszeichen Verwendung in package.json:

"mkdirs": [ 
    "dist/AS", 
    "libs", 
    "models/scripts" 
    ], 
    "scripts": { 
    "mkdirs": "mkdir -p `bin/pkgkey.js mkdirs`", 
    .... 

.. wo das bin/pkgkey.js mkdirs Skript einfach die mkdirs Array zurückgibt. Das mag merkwürdig erscheinen, aber es ist großartig, um Arbeitsabläufe im npm-Stil zu organisieren.

Das PKGKEY Skript (vereinfacht):

#!/usr/bin/env node 

const fs = require('fs') 
const json = JSON.parse(fs.readFileSync('package.json')) 
const key = process.argv[2] 
let val = json[key] 
if (Array.isArray(val)) val = val.join(' ') 

process.stdout.write(val) 
+1

kein Benutzer Fenster, aber können Sie die Zitate nicht entkommen: ' "mkdirs": "mkdir -p \" bin/pkgkey.js mkdirs \ "",' – Dominik

+0

@Dominik Die OP genannten Backticks: ' \ '' aber ja. – ifconfig

+0

Ja, er sagte, dass sie nicht funktionieren, also ziehe zu Zitaten, die in allen Shells funktionieren ... nein? – Dominik

Antwort

0

prüfen Cross-env, weiß nicht, ob es für Ihren Anwendungsfall funktioniert, aber ich verwende es npm Skripte plattformunabhängige

npm i --save-dev cross-env 

"mkdirs": "cross-env mkdir -p ..." 
machen

https://www.npmjs.com/package/cross-env

Verwandte Themen