我的项目有gulp starter kit,但是,我想使用gulp-load-plugins来获取package.json文件的devDependencies。我的文件结构是
ProjectName
Gulp
-Tasks
-broswerify.js
-browserSync.js
-jade.js
-lint.js
Gulpfile.js
config.json
package.json
Gulpfile.js
var requireDir = require('require-dir');
var dir = requireDir('./gulp/tasks', {recurse: true});
jade.js (使用gulp-load-plugins正常工作)
var gulp = require('gulp');
var config = require('../../config.json');
var plugins = require('gulp-load-plugins')();
gulp.task('jade', function(){
return gulp.src(config.jade.src)
.pipe(plugins.jade())
.pipe(gulp.dest(config.jade.build))
});
browsersync.js (使用gulp-load-plugins无效)
var gulp = require('gulp');
var config = require('../../config.json').browsersync;
var plugins = require('browsersync'); // works
//var plugins = require('gulp-load-plugins')(); // it doesn't works.
gulp.task('browsersync', function () {
plugins.browserSync.init(config); // (browsersync required)
//plugins.browserSync.init(config) it doesn't work. (gulp-load-plugins required)
});
我想知道如果有更好的方法吗?
答案 0 :(得分:1)
如果每个插件都有一个单独的文件,为什么不使用gulp-load-plugins?
答案 1 :(得分:1)
这就是我加载gulp-load-plugins的方法:
$ = require('gulp-load-plugins')({
pattern: ['gulp-*', 'gulp.*'],
replaceString: /\bgulp[\-.]/,
lazy: true,
camelize: true
}),
以下是修订插件的示例:
// revision styles
gulp.task('rev-styles', function () {
return gulp.src(dev.css)
.pipe($.rev())
.pipe($.cssmin())
.pipe(gulp.dest(dist.css))
.pipe($.filesize())
.pipe($.rev.manifest({merge: true}))
.pipe(gulp.dest('./'))
//rev replace
.on('end', function() {
return gulp.src(['./rev-manifest.json', 'dist/*.html'])
.pipe($.revCollector({
replaceReved: true,
dirReplacements: {
'css': 'css'
}
}))
.pipe(gulp.dest(dist.dist))
});
});
正如你所看到的,我所有的管道都被称为.pipe($.pluginName())
,意思是$代表gulp-。如果你有一个名为gulp-name-secondname的插件,你可以这样称呼它:.pipe($.nameSecondname())
。
顶部是我需要gulp-load-plugins我已经将camelize设置为true。延迟加载仅加载您使用的插件而不是所有插件。
作为旁注,我强烈建议不要在不同文件中分离插件,但可以对它们进行调制,这意味着将重要任务分离到单独的文件中,如编译文件,优化文件,构建文件等。
这可能有助于您更好地理解gulp文件分离http://macr.ae/article/splitting-gulpfile-multiple-files.html
小心使用gulp-load-plugins,因为它会减慢你的任务,例如我运行gulp-webserver,当我使用gulp-load-plugins时,任务在200ms后完成,而如果我正常使用它则完成20ms。因此,不要使用所有内容,与它一起玩,看看你在每项任务中失去了多少性能并确定优先级。
答案 2 :(得分:0)
我使用过MONEY
但发现它主要增加了复杂性并模糊了我的代码。对于不那么熟悉Gulp的人来说,也很难理解。将所有模块显式声明在顶部,看起来更清晰,更容易理解。