als-require
Version:
A utility for using CommonJS require in the browser and creating bundles.
27 lines (25 loc) • 1.3 kB
JavaScript
const UglifyJS = require("uglify-js");
const { writeFileSync } = require('fs');
const { join } = require('path')
const getFullPath = require('../browser/get-full-path');
const getContents = require('../browser/get-contents')
const getFn = require('../lib/get-fn');
const parseError = require('../lib/parse-error');
const Require = require('../browser/require');
const getNodeModules = require('../browser/get-node-modules')
const orderKeys = require('../lib/order-keys')
const contents = [orderKeys,getFullPath, getNodeModules, getContents, parseError, getFn, Require];
const content = /*js*/`const Require = (function(){
const packageJsonCache = {};
${contents.map(fn => fn.toString()).join('\n')}
${contents.map(fn => `Require.${fn.name} = ${fn.name};`).join('')}
return Require;
})();
const require = (path, options, ...params) => Require.getModule(path, options,...params);
`
writeFileSync(join(__dirname, '..', 'require.js'), content, 'utf-8')
const minified = UglifyJS.minify(content,{ keep_fnames: true }).code
// .replace(',require=Require.getModule;', ';\nconst require=Require.getModule;')
.replace(',require=(', ';\nconst require=(')
writeFileSync(join(__dirname, '..', 'require.min.js'), minified, 'utf-8')
console.log('Browser file builded')