Files
morten-olsen.github.io/config/plugins/withGenerator/webpack.js
2022-04-03 12:18:25 +02:00

39 lines
1.2 KiB
JavaScript

require('reflect-metadata');
require('@babel/register')({
extensions: [".es6", ".es", ".jsx", ".js", ".mjs", ".ts"],
});
const loaderUtils = require('loader-utils');
const path = require('path');
const yaml = require('yaml');
const { generate } = require('../../../src/generators');
module.exports = function (source) {
var callback = this.async();
const location = this.resourcePath;
const definition = yaml.parse(source);
const options = this.getOptions();
generate({
definition,
location,
isDev: options.isDev,
addDependency: this.addDependency
})
.then((output) => {
const files = Object.entries(output).reduce((output, [key, value]) => {
const { name, content, isStatic } = value;
const targetName = isStatic
? `${isStatic}/${name}`
: loaderUtils.interpolateName(this, `[contenthash]/${name}`, {content: content});
const location = path.join(options.outputPath, targetName);
const publicPath = path.join(options.publicPath, targetName);
this.emitFile(location, content);
return {
...output,
[key]: publicPath,
}
}, {});
callback(null, `module.exports = ${JSON.stringify(files)}`);
})
.catch(callback);
}