2014-06-26 7 views
8

Sto provando a eseguire più comandi CLI da scripts.postinstall di grunt. Non riesco a capire come far funzionare entrambi. Se aggiungo il secondo comando non corro. Separatamente entrambi funzionano su postinstall e nella console.Come si eseguono più script grunt scripts.post?

Ho provato avvolgendoli in un array:

"scripts": { 
    "postinstall": ["node_modules/.bin/bower install", "grunt setup"] 
}, 

Ho provato separandoli con un punto e virgola:

"scripts": { 
    "postinstall": "node_modules/.bin/bower install; grunt setup" 
    }, 

io non riesco a trovare la soluzione su NPM Scripts

Il mio gruntfile.js per queste sezioni è simile al seguente:

mkdir: { 
    setup: { 
     options: { 
      create: [ 
       'app/main/source/www', 'app/main/build', 'app/main/docs', 'app/main/tests', 
       'app/development', 
       'app/releases' 
      ] 
     } 
    } 
} 

grunt.registerTask('setup', [ 
    'mkdir:setup', 
    'bowercopy:wordpress' 
]); 

Nel caso in cui aiuti qui è una versione ridotta del mio package.json che ho tagliato gli esempi di codice sopra, principalmente per fornire contesto.

{ 
    "name": "webapp", 
    "version": "0.1.0", 
    "description": "A web app using bower and grunt", 
    "main": "gruntfile.js", 
    "scripts": { 
    "postinstall": "node_modules/.bin/bower install" 
    }, 
    "repository": { 
    "type": "git", 
    "url": "someurl.com" 
    }, 
    "keywords": [ 
    "web", "app" 
    ], 
    "author": { 
    "company": "somecompany", 
    "name": "somename", 
    "email": "[email protected]" 
    }, 
    "license": "MIT", 
    "homepage": "https://someurl.com", 
    "bugs": { 
    "url": "someurl.com" 
    }, 
    "devDependencies": { 
    "grunt": "^0.4.5", 
    "bower" : "~1.3.5", 
    etc 
    } 
} 

risposta

32

È possibile utilizzare & & eseguire più comandi nella sezione script NPM

"scripts": { 
    "postinstall": "bower install && grunt setup" 
}, 
+0

non è possibile farlo su Windows. – eugenekgn

+1

Uso principalmente Windows e ho già utilizzato questa tecnica. Può funzionare – kenwarner

+0

Grazie fantastico .. grazie! – eugenekgn

8

Si potrebbe provare a scrivere uno script Bash che esegue i due comandi e corsa che, invece.

post_install.sh:

#!/bin/bash 
node_modules/.bin/bower install 
grunt setup 

package.json:

"scripts": { 
    "postinstall": "./post_install.sh" 
    }, 
+0

Ciao Chris, a prima sembrava funzionare, ma sembra fallire da qualche parte, dato che l'installazione di bower non abbassa t lui dipendenze, e setup grunt non crea il file di progetto heirarchy. Sembra funzionare postinstall però ??? Come faresti il ​​debug di questo? Non sembra che ci siano errori. – mtpultz

+1

Scusa Chris, funziona alla grande. Per qualsiasi motivo ho avuto il sublime testo di apertura di file .sh di default con il mio editor di testo. Quindi avrebbe "eseguito" post_install.sh, ma in realtà ha solo provato a riaprire quello che avevo già aperto in sublime – mtpultz