手册
目录
或许你已经发现,tmt-workflow 所有项目只共享一份 node_modules,所有的 task 也都是定义在 gulpfile.js 外的 _tasks 目录下,其实现方式其实很简单。
我们先看项目下面的 gulpfile.js
var gulp = require('gulp');
var fs = require('fs');
var path = require('path');
//注册
var deep = 3;
run_tasks('_tasks');
function run_tasks(tasks_path) {
if (--deep < 0) {
throw new Error('something wrong in require tasks!');
return;
}
tasks_path = path.join('../', tasks_path);
if (fs.existsSync(tasks_path)) {
require(tasks_path)(gulp);
} else {
run_tasks(tasks_path);
}
}每一次执行 gulp 任务时,会向上寻找 _tasks 目录,这里定义的层级为 3,也就是在 gulpfile.js 会向上寻找 3 个层级,只要 _tasks 在这 3 个层级内即可,如果你的目录很深很深,改一下这里的 3 即可。
接着看 _tasks 目录下的 index.js:
fs.readdirSync(__dirname).filter(function (file) {
return (file.indexOf(".") !== 0) && (file.indexOf('task') === 0);
}).forEach(function (file) {
var registerTask = require(path.join(__dirname, file));
registerTask(gulp, config);
});其实就是加载当前目录下所有以 task 开头的文件,我们将各个 gulp 任务都定义成一个个以 task 开头的 js 文件,这样,就动态的注册了所有 gulp 任务,共用了一个 node_modules。
相关
视频
RELATED VIDEOS
科技资讯
1
2
3
4
5
6
7
8
9
精选课程
共5课时
17.2万人学习
共49课时
77万人学习
共29课时
61.7万人学习
共25课时
39.3万人学习
共43课时
70.9万人学习
共25课时
61.6万人学习
共22课时
23万人学习
共28课时
33.9万人学习
共89课时
125万人学习