2015-10-08 10 views
12

Ho un file gulpfile.js perfettamente funzionante quando si digita gulp nella riga di comando.Uso di gulp senza gulp globale // modifica: e senza collegamento al file bin js

Tutto il comando gulp bash esegue effettivamente il file js specificato in package.json >> bin >> gulp del gulp installato globalmente.

Ora voglio correre il gulpfile senza il sorso installata a livello globale semplicemente digitando node gulpfile.js che non riesce, ovviamente, e già si è detto molto spesso, nonostante sorso essere installato in locale e ha richiesto all'inizio del gulp gulpfile.js

Utilizzando senza lo strumento cli sarebbe possibile usare molto facilmente gulp come parte di altri plugin npm.

Nota:
richiedere un altro gulpfile.js opere provenienti da un gulpfile.js originali quando questo gulpfile.js originale è stato avviato tramite lo strumento sorso cli.

Domanda:
Qual è il modo migliore di gestire/richiedere sorso, senza la necessità per lo strumento cli gulp globale (// edit: o il collegamento ad esso a livello locale)? per esempio. essere in grado di richiederlo semplicemente da un altro file js quando gulp è solo una dipendenza installata localmente. (In altre parole, a partire sorso di programmazione dall'interno JS senza l'intervento CLI di qualsiasi tipo)

risposta

23

In package.json

"scripts": { 
    "gulp": "gulp" 
}, 

E poi questo comando npm run gulp anche NPM offre la possibilità di passare parametri aggiuntivi ai comandi. Questo è solo il caso di NPM> = 2.0

Aggiornamento: Senza collegamento bin

È possibile controllare il file node_modules/.bin/gulp o node_modules/gulp/bin/gulp.js per vedere come si può iniziare a gulp (linea 129 è interessante)

I credo che questo dovrebbe funzionare:

var gulp = require('gulp'); 

gulp.task('default', function() { 
    console.log('do something'); 
}); 

gulp.start.apply(gulp, ['default']); 
+0

anche questo è un altro modo di collegare lo strumento CLI. – philkunz

+0

Sì, e dal momento che npm> = 2.0 è anche possibile passare argomenti allo strumento CLI –

+0

Ps check node_modules/.bin/gulp –

5

Quando si installa localmente (npm install --save-dev gulp) si può semplicemente eseguire chiamando ./node_modules/.bin/gulp all

Oppure è possibile definire uno script npm, e eseguirlo con npm run gulp

aggiungendo questo al package.json

"scripts": { 
    "gulp": "gulp" 
} 
+0

ok, ma questo è solo un altro modo di collegare allo strumento CLI, non è vero? – philkunz

+0

@philli sì ma senza la necessità di installarlo globalmente, si utilizzerà l'installazione locale solo nella directory 'node_modules' dei progetti. Devi installare gulp da qualche parte altrimenti puoi eseguire gulp. –

+0

Ma perché è necessario utilizzare la CLI quando richiedo il gulp nel file js? Capisco che gulp come dipendenza deve essere installato. – philkunz

1

Nella tua package.json aggiungere la seguente:

"scripts": { 
    "gulp": "node ./node_modules/gulp/bin/gulp.js <task-name>" 
} 

ed eseguito dalla riga di comando digitando npm run gulp.

Ciò elimina la dipendenza da avere sorso installata a livello globale