2014-05-14 8 views
21

Vielleicht ist es etwas falsch mit meinem Ansatz, aber ich habe eine folgende Situation:Lauf schluck Aufgabe von einem gulpfile.js von einem anderen gulpfile.js

  1. Ich habe ein component-a, die eine gulpfile hat. Eine seiner Aufgaben (zB Build) erstellt die Komponente und erstellt eine kombinierte js-Datei im Ordner "dist"
  2. Ich habe eine component-b, die eine gulpfile hat. Eine seiner Aufgaben (zB Build) erstellt die Komponente und erstellt eine kombinierte js-Datei im Ordner "dist"
  3. Ich habe ein Projekt, das beide Komponenten verwendet. Dieses Projekt hat eine gulpfile als auch und in es würde Ich mag eine Aufgabe schreiben, die:
    • ausführt aus/components/Komponenten- Aufgabe von /components/component-a/gulpfile.js
    • ausführt bauen Aufgabe bauen b/gulpfile.js
    • concats /components/component-a/dist/build.js und /components/component-b/dist/build.js (ich weiß, wie dies zu tun)

Was ich nicht weiß, ist, wie man die Build-Aufgabe von /components/component-?/gulpfile.js ausführt. Ist es überhaupt möglich oder sollte ich anders damit umgehen?

+0

Könnten Sie bitte akzeptieren Walter Roman Antwort als dies richtig ist und die Arbeits ? – thomaux

Antwort

17

require ('child_process'). Spawn;

Das Ausführen einer Gulpfile aus einem anderen Verzeichnis ist ziemlich einfach mit Node's child_process#spawn module.

Versuchen Anpassung der folgenden auf Ihre Bedürfnisse:

// Use `spawn` to execute shell commands with Node 
const { spawn } = require('child_process') 
const { join } = require('path') 

/* 
    Set the working directory of your current process as 
    the directory where the target Gulpfile exists. 
*/ 
process.chdir(join('tasks', 'foo')) 

// Gulp tasks that will be run. 
const tasks = ['js:uglify', 'js:lint'] 

// Run the `gulp` executable 
const child = spawn('gulp', tasks) 

// Print output from Gulpfile 
child.stdout.on('data', function(data) { 
    if (data) console.log(data.toString()) 
}) 

schluck-tuckern

Obwohl gulp-chug über einen Weg, um darüber zu gehen, it has been blacklisted by gulp's maintainers für sein ...

" execing, zu komplex und verwendet nur Schluck als Globber "

Die official blacklist Staaten ...

„kein Grund dafür, existieren verwenden die require-alle-Modul oder Knotens erfordern“