从一个 gulpfile.js 从另一个 gulpfile.js 运行 gulp 任务
也许我的方法有问题,但我有以下情况:
Perhaps it's something wrong with my approach but I have a following situation:
- 我有一个包含 gulpfile 的
component-a
.它的一项任务(例如构建)构建组件并在 dist 文件夹中创建一个组合的 js 文件 - 我有一个包含 gulpfile 的
component-b
.它的一项任务(例如构建)构建组件并在 dist 文件夹中创建一个组合的 js 文件 - 我有一个使用这两个组件的项目.这个项目也有一个 gulpfile,我想在其中编写一个任务:
- 从/components/component-a/gulpfile.js 执行构建任务
- 从/components/component-b/gulpfile.js 执行构建任务
- concats/components/component-a/dist/build.js 和/components/component-b/dist/build.js(我知道怎么做)
- 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 - 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 - 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"
相关文章