【问题标题】:gulp add pipe to convert to Vinyl objectsgulp 添加管道以转换为 Vinyl 对象
【发布时间】:2021-02-20 11:32:36
【问题描述】:

我已经升级到 gulp 4.0.2 版本我需要更新其中一项任务

const debug = require('gulp-debug');
const i18nextParser = require('i18next-parser');

function myTask() {
  return gulp
    .src(['./js/**/*.js', './js/**/*.jsx'])
    .pipe(
      i18nextParser({
        locales: ['en', 'de'],
        functions: ['translate'],
        output: '/opt/locales/'
      })
    )
    .pipe(debug())
    .pipe(gulp.dest('/opt/locales/'));
});

我希望将这些文件转换为 Vinyl 对象:

[17:04:32] gulp-debug: opt/locales/de/translation.json
[17:04:32] gulp-debug: opt/locales/de/translation_old.json
[17:04:32] gulp-debug: opt/locales/en/translation.json
[17:04:32] gulp-debug: opt/locales/en/translation_old.json

否则我有错误

Error: Received a non-Vinyl object in `dest()`

是否有我可以通过管道传递的函数以使此任务正常工作?

i18next-parser 版本是0.7.0。升级到最新的3.6.0 版本根本不会产生任何输出。

【问题讨论】:

标签: gulp internationalization i18next gulp-dest


【解决方案1】:

所以我通过使用 gulp-map 添加额外步骤解决了这个问题

const map = require('gulp-map');
const Vinyl = require('vinyl');

  return gulp
    .src(['./js/*.js', './js/*.jsx'])
    .pipe(
      i18nextParser({
        locales: ['en', 'de'],
        functions: ['translate'],

        output: JSON_DIR
      })
    )
    .pipe(map(function(file) {
      // Explicitly convert to Vinyl object otherwise `gulp.dest()` will fail
      return new Vinyl(file);
    }))
    .pipe(gulp.dest(JSON_DIR));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-25
    • 2019-07-26
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    相关资源
    最近更新 更多