2014-05-14 33 views
21

Có lẽ đó là một cái gì đó sai với cách tiếp cận của tôi, nhưng tôi có một tình huống sau đây:Chạy nhiệm vụ ngụm từ một gulpfile.js từ gulpfile.js khác

  1. Tôi có một component-a mà có một gulpfile. Một trong các nhiệm vụ của nó (ví dụ: xây dựng) xây dựng thành phần và tạo tệp kết hợp js trong thư mục dist
  2. Tôi có một số component-b có gulpfile. Một trong các nhiệm vụ của nó (ví dụ: build) xây dựng thành phần và tạo một tệp js kết hợp trong thư mục dist
  3. Tôi có một dự án sử dụng cả hai thành phần. Dự án này có một gulpfile như tốt và trong đó tôi muốn viết một nhiệm vụ:
    • thực thi xây dựng nhiệm vụ từ /components/component-a/gulpfile.js
    • thực thi xây dựng nhiệm vụ từ/components/component- b/gulpfile.js
    • concats /components/component-a/dist/build.js và /components/component-b/dist/build.js (tôi biết làm thế nào để làm điều này)

Những gì tôi không biết là làm thế nào để thực hiện nhiệm vụ xây dựng từ /components/component-?/gulpfile.js. Liệu nó có thể xảy ra hay tôi nên giải quyết tình huống này bằng cách khác?

+0

Ông có thể chấp nhận câu trả lời Walter La Mã như điều này là đúng và làm việc ? – thomaux

Trả lời

17

yêu cầu ('child_process').

Chạy Gulpfile từ một thư mục khác khá đơn giản với Node's child_process#spawn module.

Cố gắng thích nghi với những điều sau đây yêu cầu của bạn:

// 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()) 
}) 

ngụm-chug

Mặc dù sử dụng gulp-chug là một cách để đi về việc này, it has been blacklisted by gulp's maintainers cho là ...

" thực hiện, quá phức tạp và chỉ sử dụng gulp làm cầu nối "

Các official blacklist bang ...

"không có lý do cho điều này để tồn tại, sử dụng các yêu cầu-tất cả các mô-đun hoặc nút của yêu cầu"

Các vấn đề liên quan