From: Pierre Ossman Date: Sat, 9 Dec 2017 13:14:04 +0000 (+0100) Subject: Remove intermediate files when bundling X-Git-Tag: v1.1.0~94^2~2 X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=be7b4e88f003cea6f90b67a3d347b30272fb7512;p=mirror_novnc.git Remove intermediate files when bundling --- diff --git a/utils/use_require.js b/utils/use_require.js index 2e1e2d0..cfac079 100755 --- a/utils/use_require.js +++ b/utils/use_require.js @@ -60,7 +60,9 @@ const readdir = promisify(fs.readdir); const lstat = promisify(fs.lstat); const copy = promisify(fse.copy); +const unlink = promisify(fse.unlink); const ensureDir = promisify(fse.ensureDir); +const rmdir = promisify(fse.rmdir); const babelTransformFile = promisify(babel.transformFile); @@ -133,6 +135,8 @@ var make_lib_files = function (import_format, source_maps, with_app_dir) { const helpers = require('./use_require_helpers'); const helper = helpers[import_format]; + const outFiles = []; + var handleDir = (js_only, vendor_rewrite, in_path_base, filename) => Promise.resolve() .then(() => { if (no_copy_files.has(filename)) return; @@ -173,10 +177,12 @@ var make_lib_files = function (import_format, source_maps, with_app_dir) { // append URL for external source map code += `\n//# sourceMappingURL=${path.basename(out_path)}.map\n`; } + outFiles.push(`${out_path}`); return writeFile(out_path, code) .then(() => { if (source_maps === true || source_maps === 'both') { console.log(` and ${out_path}.map`); + outFiles.push(`${out_path}.map`); return writeFile(`${out_path}.map`, JSON.stringify(map)); } }); @@ -215,7 +221,26 @@ var make_lib_files = function (import_format, source_maps, with_app_dir) { const out_app_path = path.join(out_path_base, 'app.js'); console.log(`Writing ${out_app_path}`); return helper.appWriter(out_path_base, out_app_path) - .then(transform_html); + .then(transform_html) + .then(() => { + if (!helper.removeModules) return; + console.log(`Cleaning up temporary files...`); + return Promise.all(outFiles.map(filepath => { + unlink(filepath) + .then(() => { + // Try to clean up any empty directories if this + // was the last file in there + let rmdir_r = dir => { + return rmdir(dir) + .then(() => rmdir_r(path.dirname(dir))) + .catch(() => { + // Assume the error was ENOTEMPTY and ignore it + }); + }; + return rmdir_r(path.dirname(filepath)); + }); + })); + }); }) .catch((err) => { console.error(`Failure converting modules: ${err}`); diff --git a/utils/use_require_helpers.js b/utils/use_require_helpers.js index 6659854..d9138ba 100644 --- a/utils/use_require_helpers.js +++ b/utils/use_require_helpers.js @@ -44,6 +44,7 @@ module.exports = { .then(() => ``); }, noCopyOverride: () => {}, + removeModules: true, }, 'systemjs': { appWriter: (base_out_path, out_path) => {