代码之家  ›  专栏  ›  技术社区  ›  dcp3450

将NPM转换为一项吞咽任务

  •  0
  • dcp3450  · 技术社区  · 8 年前

    我的gulp文件使用Nunjucks生成html文件集。我想使用这些文件将一些html输出到文本文件。我发现了一个可以将html文件转换为文本的NPM,但我不能百分之百确定如何或是否可以在一个吞咽任务中使用它 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。我觉得这应该是可行的,但我还不太熟悉gulpfiles。

    1 回复  |  直到 8 年前
        1
  •  2
  •   Mark    8 年前
    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');
          });
       });
    });
    

    你不必大口大口地喝。src和gulp。如果你不想的话,可以在吞咽任务中使用dest和streams。上面的任务将一个接一个地全局化您的文件,并单独对其进行操作,将每个文件名发送到html2text函数。

    请参见 glob-fs 包裹