This repository has been archived on 2024-03-30. You can view files and clone it, but cannot push or open issues or pull requests.
parcel-plugin-wrapper/ts/index.ts
2019-01-26 02:09:36 +01:00

51 lines
1.2 KiB
TypeScript

const path = require('path');
const fs = require('fs');
const mainExport = bundler => {
const readAsset = pathArg => {
try {
return fs.readFileSync(pathArg, 'utf8');
} catch (e) {
console.error('file is invalid');
throw e;
}
};
const writeAsset = (name, { header = '', footer = '' }) => {
fs.writeFileSync(
name,
`${header}
${readAsset(name)}
${footer}`
);
};
const processAsset = async (bundle, processFn) => {
const { name } = bundle;
const wrappingCode = await processFn({ name, bundler });
if (wrappingCode) {
writeAsset(name, wrappingCode);
}
bundle.childBundles.forEach(function(bundle) {
processAsset(bundle, processFn);
});
};
bundler.on('bundled', async bundle => {
try {
const CWD = process.cwd();
const processFn = require(path.join(CWD, '.assetWrapper.js'));
if (processFn && typeof processFn === 'function') {
await processAsset(bundle, processFn);
}
} catch (error) {
console.warn(
'parcel-plugin-wrapper cannot work without a .assetWrapper.js in the root of your project!'
);
}
});
};
export default mainExport;