从一个 gulpfile.js 从另一个 gulpfile.js 运行 gulp 任务

Running gulp task from one gulpfile.js from another gulpfile.js(从一个 gulpfile.js 从另一个 gulpfile.js 运行 gulp 任务)

本文介绍了从一个 gulpfile.js 从另一个 gulpfile.js 运行 gulp 任务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

也许我的方法有问题,但我有以下情况:

Perhaps it's something wrong with my approach but I have a following situation:

  1. 我有一个包含 gulpfile 的 component-a.它的一项任务(例如构建)构建组件并在 dist 文件夹中创建一个组合的 js 文件
  2. 我有一个包含 gulpfile 的 component-b.它的一项任务(例如构建)构建组件并在 dist 文件夹中创建一个组合的 js 文件
  3. 我有一个使用这两个组件的项目.这个项目也有一个 gulpfile,我想在其中编写一个任务:
    • 从/components/component-a/gulpfile.js 执行构建任务
    • 从/components/component-b/gulpfile.js 执行构建任务
    • concats/components/component-a/dist/build.js 和/components/component-b/dist/build.js(我知道怎么做)
  1. I have a component-a that has a gulpfile. One of its tasks (eg. build) builds the component and creates a combined js file in dist folder
  2. I have a component-b that has a gulpfile. One of its tasks (eg. build) builds the component and creates a combined js file in dist folder
  3. I have a project that uses both components. This project has a gulpfile as well and in it I would like to write a task that:
    • executes build task from /components/component-a/gulpfile.js
    • executes build task from /components/component-b/gulpfile.js
    • concats /components/component-a/dist/build.js and /components/component-b/dist/build.js (I know how to do this)

我不知道如何从/components/component-?/gulpfile.js 执行构建任务.是否有可能或者我应该以其他方式处理这种情况?

What I don't know is how to execute the build task from /components/component-?/gulpfile.js. Is it even possible or I should deal with this situation otherwise?

推荐答案

require('child_process').spawn;

使用 Node 的 child_process#spawn<从不同的目录运行 Gulpfile 非常简单/code> 模块.

尝试根据您的需要调整以下内容:

Try adapting the following to your needs:

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

咕噜咕噜

虽然使用 gulp-chug 是解决此问题的一种方法,但 它已被 gulp 的维护者列入黑名单 因为...

gulp-chug

Although using gulp-chug is one way to go about this, it has been blacklisted by gulp's maintainers for being...

执行,太复杂,只是将 gulp 用作 globber"

"execing, too complex and is just using gulp as a globber"

官方黑名单声明...

没有理由存在,使用 require-all 模块或节点的 require"

"no reason for this to exist, use the require-all module or node's require"

这篇关于从一个 gulpfile.js 从另一个 gulpfile.js 运行 gulp 任务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:从一个 gulpfile.js 从另一个 gulpfile.js 运行 gulp 任务

基础教程推荐