【问题标题】:Translating an NPM into a gulp task将 NPM 转换为 gulp 任务
【发布时间】:2018-07-06 07:54:53
【问题描述】:

我的 gulp 文件使用 Nunjucks 生成多组 html 文件。我想使用这些文件将一些 html 输出到文本文件。我找到了一个将 html 文件转换为文本的 NPM,但我不能 100% 确定如何或是否可以在 gulp 任务中使用它。模块是 html-to-text,我正在尝试像这样使用它:

var html2text = require('html-to-text');
gulp.task('html2text',function(){
  return gulp.src('build/*.html')
  .pipe(html2text.fromFile())
  .pipe(gulp.dest('build/txt'))
});

显然它在抱怨没有得到要翻译成 txt 的文件。我觉得这应该是可行的,但我还不是非常精通 gulpfile。

【问题讨论】:

  • npmjs.com/package/gulp-nunjucks 看起来微不足道
  • 为了兼容.pipe(),或许你需要实现一个转换流。 nodejs.org/api/…
  • @rafaelcastrocouto 我有一个目录,其中包含需要转换为文本的 html 集。我正在使用 Nunjucks 模板系统来创建 html。我不能使用相同的文件来创建文本版本,因为它们有一个已经在 html 进程中使用的模板。

标签: html node.js npm gulp


【解决方案1】:
var gulp = require('gulp');
var glob = require('glob-fs')({ gitignore: true });
var html2text = require('html-to-text');
var fs = require('fs');
var path = require('path');

gulp.task('default', function () {

  glob.readdirStream('build/*.html')
    .on('data', function (file) {
      console.log(file.path);

      html2text.fromFile(file.path, (err, text) => {
        if (err) return console.error(err);

        // strip off extension and parent directories
        var filename = path.basename(file.path, '.html');

        // I assume you want a.html text to be written to 'build/txt/a.txt'
        fs.writeFileSync(path.join('build/txt', filename  + '.txt'), text, 'utf8');
      });
   });
});

如果您不想,您不必使用 gulp.src 和 gulp.dest 并在 gulp 任务中使用流。上面的任务将你的文件一个接一个地全局化,并单独对它们进行操作,将每个文件名发送到 html2text 函数。

查看glob-fs 包。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-23
    • 2014-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-05
    相关资源
    最近更新 更多