有没有办法将webpack,Node API的输出作为字符串?

时间:2016-10-07 18:29:13

标签: webpack

是否有属性或编译器的属性保存已编译的包?

var compiler = require('webpack')({
    entry: entry_point,
    resolve: {
        modulesDirectories: modules,
        extensions: ['', '.js']
    },
    stats: {
        colors: true,
        progress: true,
        hash: true
    }
}, function(err, stats) {
   // compiler
   // stats

});

1 个答案:

答案 0 :(得分:4)

应该可以将编译器配置为使用替换的内存中文件系统,并在编译完成后检索输出。

这是一个示例compile()函数,它返回一个将解析输出文件内容的promise:

const MemoryFs = require('memory-fs')
const webpack = require('webpack')

function compile () {
  const compiler = webpack({
    output: {
      filename: 'bundle.js',
      path: '/'
    }
  })

  compiler.outputFileSystem = new MemoryFs()

  return new Promise((resolve, reject) => {
    compiler.run((err, stats) => {
      if (err) return reject(err)

      if (stats.hasErrors() || stats.hasWarnings()) {
        return reject(new Error(stats.toString({
          errorDetails: true,
          warnings: true
        })))
      }

      const result = compiler.outputFileSystem.data['bundle.js'].toString()
      resolve({result, stats})
    })
  })
}