gulp - 使用 gulp-if 有条件地使用函数
问题描述
我试图在生产时有条件地更改 JS 文件的路径。我正在使用gulp-inject-string
withgulp-if
来调用一个函数,该函数插入我的远程路径 + 一系列 html 文件的父文件夹名称:
```
...(require a bunch of stuff here)...
var inject = require('gulp-inject-string');
function getFolders(dir) {
return fs.readdirSync(dir)
.filter(function(file) {
return fs.statSync(path.join(dir, file)).isDirectory();
});
}
function injectAfterEach(src) {
var folders = getFolders(config.root.dest);
var tasks = folders.map(function(folder) {
if (folder !== 'base') {
var fullPath = path.join(config.remotePath, folder, '/');
console.log('folder: ' + fullPath);
return gulp.src(src)
.pipe(inject.afterEach('<script src="', fullPath))
.pipe(gulp.dest(config.tasks.html.dest))
}
});
return tasks;
}
gulp.task('html', function() {
return gulp.src(config.tasks.html.src)
.pipe(gulpif(process.env.NODE_ENV == 'production', injectAfterEach(config.tasks.html.src) ))
.pipe(gulpif(process.env.NODE_ENV == 'production', removeCode({ production: true })))
.pipe(gulpif(process.env.NODE_ENV == 'production', htmlmin(config.tasks.html.htmlmin)))
.pipe(gulp.dest(config.tasks.html.dest))
.pipe(browserSync.stream());
});
```
我不断收到“dest.on 不是函数”错误,我猜这是因为我injectAfterEach
没有返回 stream.Transform 对象?有人可以澄清有条件地运行该功能的最佳方式吗?我的 gulp 有点不稳定,但我尝试参考这个特定用例的api 文档。
解决方案
推荐阅读
- java - 当我认为它应该返回 1 时,为什么我的代码返回 2?(黑客等级问题的一部分)
- python - Tensorflow Python:完成训练 DNN 回归模型,多次执行时预测差异很大
- admob - 如何将 ti.admob 与 Android 应用程序一起使用?示例不起作用
- grails - Gorm:对象映射
- javascript - 有没有办法在 p5.js 中使用默认字体在文本后面放置一个框?
- python - Python subprocess.call 非零退出状态1
- reactjs - 状态并不总是更新
- macos - auval:错误:类数据没有必填字段:
== 组件类型 - console - F9 在 Spyder 中执行选定的文本?
- ruby-on-rails - Ruby on Rails 表单与表中的 collection_check_boxes - has_and_belongs_to_many 关联