rsnext/server/build/loaders/emit-file-loader.js
Kevin Decker 3f50abcb51 Emit ES6 code for module source in emit file load (#2478)
Previously the commonjs modules were being passed into webpack dependency layer, preventing tree shaking.
2017-07-07 09:48:00 +05:30

24 lines
738 B
JavaScript

import loaderUtils from 'loader-utils'
module.exports = function (content, sourceMap) {
this.cacheable()
const query = loaderUtils.getOptions(this)
const name = query.name || '[hash].[ext]'
const context = query.context || this.options.context
const regExp = query.regExp
const opts = { context, content, regExp }
const interpolatedName = loaderUtils.interpolateName(this, name, opts)
const emit = (code, map) => {
this.emitFile(interpolatedName, code, map)
this.callback(null, content, sourceMap)
}
if (query.transform) {
const transformed = query.transform({ content, sourceMap, interpolatedName })
return emit(transformed.content, transformed.sourceMap)
}
return emit(content, sourceMap)
}