Skip to content

Commit

Permalink
fix: build source maps (#2416)
Browse files Browse the repository at this point in the history
  • Loading branch information
guybedford committed Aug 18, 2022
1 parent 1c79bfc commit 8bae641
Show file tree
Hide file tree
Showing 10 changed files with 49 additions and 9 deletions.
2 changes: 1 addition & 1 deletion chompfile.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ default-task = 'build'
extensions = [
'chomp@0.1:npm',
'chomp@0.1:footprint',
'chomp@0.1:terser',
'./terser.js',
'chomp@0.1:rollup',
'chomp@0.1:ncc'
]
Expand Down
2 changes: 1 addition & 1 deletion dist/extras/amd.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dist/extras/dynamic-import-maps.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dist/extras/global.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dist/extras/module-types.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dist/extras/named-exports.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dist/extras/named-register.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dist/extras/transform.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion dist/extras/use-default.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

40 changes: 40 additions & 0 deletions terser.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
Chomp.addExtension('chomp@0.1:npm');

Chomp.registerTemplate('terser', function (task) {
if (task.engine || task.run)
throw new Error('"engine", "run" not configurable for Terser template.');

const opts = task.templateOptions;
const preamble = opts.output?.preamble;
const pjsonVersion = typeof preamble === 'string' && preamble.includes('#PJSON_VERSION');
const { autoInstall } = opts;
const targetName = task.targets[0].split('/').pop();
if (opts.sourceMap === true)
opts.sourceMap = { filename: targetName, url: '$TARGET', includeSources: true };
const optionsStr = JSON.stringify(opts, null, 2).replace(/\n/g, '\n ').replace('"$TARGET"', 'basename(process.env.TARGET)');

return [{
name: task.name,
targets: task.targets,
deps: [...task.deps, ...pjsonVersion ? ['package.json'] : [], ...ENV.CHOMP_EJECT ? ['npm:install'] : ['node_modules/terser']],
engine: 'node',
run: ` import { readFileSync, writeFileSync } from 'fs';
import { basename } from 'path';
import { minify } from 'terser';
${pjsonVersion ? ` const pjson = JSON.parse(readFileSync('package.json', 'utf8'));` : ''}
const { code, map } = await minify({ [basename(process.env.DEP)]: readFileSync(process.env.DEP, 'utf8') }, ${
pjsonVersion ? optionsStr.replace('"preamble": ' + JSON.stringify(preamble), '"preamble": `' + preamble.replace(/(\`|\${)/, '\\$1').replace('#PJSON_VERSION', '${pjson.version}') + '`') : optionsStr
});
writeFileSync(process.env.TARGET, code);
${opts.sourceMap ? ' writeFileSync(\`\${process.env.TARGET}.map\`, map);\n' : ''}`
}, ...ENV.CHOMP_EJECT ? [] : [{
template: 'npm',
templateOptions: {
autoInstall,
packages: ['terser@5'],
dev: true
}
}]];
});

0 comments on commit 8bae641

Please sign in to comment.