javascript - 使用 Gulp 检查文件中是否存在 token

标签 javascript gulp gulp-replace

如果我这样做:

var gulp = require('gulp');
var replace = require('gulp-replace');
var rename = require('gulp-rename');

gulp.task('TaskExample', function ReplaceExampleFileTokens() {

    return gulp.src('./src/' + 'ExampleFileTokens.config')

        .pipe(replace('#{String}#', 'Hello World'))
        .pipe(rename('ExampleFile.config'))
        .pipe(gulp.dest('./dest'));
    });

我会:

  1. 替换 ExampleFileTokens.config 中的 token ,然后

  2. 将其重命名为 ExampleFile.config

  3. 最后将其存入'./dest'

我的问题如下:

  • 如何检查 #{String}# 是否存在于 ExampleFileTokens.config 如果 token 不使用 gulp.dest 不存在?

  • 我知道我可以使用 token 在 javascript 中搜索文件,但是有没有办法使用 gulp-replace,因为它已经在搜索并替换我的 token 了?

最佳答案

我认为没有办法让 gulp-replace 完成你想要的所有工作。在流中设置条件很麻烦。

不过,您可以使用过滤器轻松完成此操作( gulp-filter

const gulp = require('gulp');
const replace = require('gulp-replace');
const rename = require('gulp-rename');

const filter = require('gulp-filter');
const filterEach = require('gulp-filter-each')

gulp.task("TaskExample", function () {

  // return true if want the file in the stream
  // const configFilter = filter(function (file) {       
  //   let contents = file.contents.toString();
  //   return contents.match('#{String}#');
  // });

  return gulp.src('./src/' + 'ExampleFileTokens.config')

    // you can use either of the following two filters
    // .pipe(configFilter)
    .pipe(filterEach(content => content.match('#{String}#')))

    .pipe(replace('#{String}#', 'Hello World'))
    .pipe(rename('ExampleFile.config'))
    .pipe(gulp.dest('./dest'));
});

关于javascript - 使用 Gulp 检查文件中是否存在 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50124267/

相关文章:

javascript - 在 Ionic 中检测特定的 app.state 变化

javascript - react 和 getClientBoundingRect

css - gulp watch 不将 sass 编译为 css

css - 未加载自定义图标字体

javascript - 如何只吞掉正则表达式替换第一个匹配项?

javascript - 无法更改 jointjs 中 UML 状态的颜色

javascript - 如果表单有隐藏字段,Vue 表单提交不起作用

ionic-framework - ionic 服务忽略 gulpStartupTasks

javascript - `gulp-replace` 仅替换部分目标,但不是全部