也许我的方法有问题,但我有以下情况:
component-a
有一个gulpfile。其任务之一(例如构建)构建组件并在dist文件夹中创建组合的js文件component-b
有一个gulpfile。其任务之一(例如构建)构建组件并在dist文件夹中创建组合的js文件我不知道如何从/components/component-?/gulpfile.js执行构建任务。是否有可能或者我应该处理这种情况呢?
答案 0 :(得分:21)
使用Node's child_process#spawn
module从其他目录运行Gulpfile非常简单。
尝试根据您的需要调整以下内容:
// 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
是解决此问题的一种方法,但it has been blacklisted by gulp
's maintainers是...... {/ p>
"执行,太复杂,只是使用gulp作为一个球员"
official blacklist州......
"没有理由存在,请使用require-all模块或节点的要求"
答案 1 :(得分:0)
也许这也会对某人有所帮助,所以我会给它一个机会。我不特别了解OP打算做什么,但是问题与我的问题类似,我的解决方案是以其他方式(例如使用项目的预构建事件)访问另一个gulp文件,例如:
cd $(SolutionDir)\ProjectThatHasTargetGulpFile
gulp theTaskNeedToRun
考虑到Gulp和NodeJs已正确安装在计算机中(可以在cmd中运行)。