2013-09-04 13 views
13

Dentro la mia composer.json, c'è una configurazione postinstall gancio come la seguente:npm postinstall riesce con più comandi

"scripts" : { 
    "dist" :  "node dist; node_modules/.bin/doccoh src/package.js", 
    "postinstall" : "node_modules/.bin/grunt setup || true; node_modules/.bin/bower install", 
    "start" :  "node server.js" 
} 

Ogni volta che l'eseguo (su Win da Git/Gnu Bash CLI), finisco con

command not found. either the command was written wrong or couldn't be found

traduzione approssimativa dall'errore CLI tedesco.

Ho provato dividendolo in multipli ;/parti separate virgola e prima cd in quella directory, ma finisce semplicemente con lo stesso messaggio di errore. Sostituire l'intero set di comandi postinstall con un semplice ls funziona. Quindi io indovina il problema potrebbe essere la separazione punto e virgola o un uso errato dei comandi. Ma nel complesso non ho idea di cosa c'è che non va.

Nota: ho ottenuto grunt-cli versione 0.1.9 e grunt versione 0.4.1 installata a livello globale.

+2

Questo può essere un po' in ritardo, ma: Puoi installare 'grunt',' grunt-cli' e 'bower' localmente (!) E quindi rilasciare il percorso (' node_modules/.bin') dal tuo 'package.json'. NPM troverà 'grunt' e' bower' se sono installati all'interno di 'node_modules': https://npmjs.org/doc/misc/npm-scripts.html (sezione" ENVIRONMENT ") – svckr

+1

@svckr +1 lasciando cadere il' node_modules/.bin' parte ha fatto il trucco per me. – James

+0

@svckr Vuoi aggiungerlo come risposta? – kaiser

risposta

2

Mi sono imbattuto in questo in cerca di qualcosa e ho pensato che questo potesse aiutare le altre persone. Ho trovato più facile passare ai file postinstall.js perché le cose si complicano leggermente. Questo rende più facile gestire il futuro.

+4

Ti dispiacerebbe archiviare un [modifica] e descrivere il tuo processo un po 'più in dettaglio? Grazie in anticipo. – kaiser

30

Sono un po 'tardi per rispondere, ma se siete su Windows, comandi multipli su una singola linea vengono eseguiti con l'uso di & &

postinstall: "some command && some other -c" 
+5

conosci un modo per farlo con il supporto multipiattaforma? – Plato

+10

@Plato l'operatore '&&' dovrebbe funzionare anche su sistemi * nix. –

+1

Tuttavia, non funziona su PowerShell .. –