beyond
Version:
The Full Stack Universal Typescript Framework
46 lines (39 loc) • 1.86 kB
JavaScript
const {fs} = global.utils;
const {join} = require('path');
module.exports = async function (modules, builder, paths, staticEntries, externals, distribution) {
// save exports on package.json
const exports = await require('./exports')(modules.exported, paths, distribution);
const statics = {};
for (const entries of Object.values(staticEntries)) {
entries.forEach(i => statics[i] = i);
}
const dependencies = await require('./dependencies')(builder, distribution);
const {application: {name, scope, version}} = builder;
const clientDeps = new Set(dependencies.clientDependencies.concat(externals.client.size ? [...externals.client.values()] : []));
const {application} = builder;
let packageJson = await fs.readFile(join(application.path, 'package.json'), 'utf8');
packageJson = JSON.parse(packageJson);
const json = {
name: `${scope ? `@${scope}/` : ''}${name}`, version,
static: statics, exports,
dependencies: dependencies.items, devDependencies: dependencies.devDependencies,
uimport: externals.all.size ? [...externals.all.values()] : true,
};
clientDeps.size && (json.clientDependencies = [...clientDeps.values()]);
const mergeObjects = (obj1, obj2) => {
const result = Object.assign({}, obj1);
for (let prop in obj2) {
if (!obj2.hasOwnProperty(prop)) continue;
result[prop] = obj2[prop];
}
return result;
}
const resultJson = mergeObjects(packageJson, json);
delete resultJson.modules;
delete resultJson.template;
delete resultJson.languages;
delete resultJson.layout;
delete resultJson.deployment;
const target = join(paths.www, 'package.json');
await fs.save(target, JSON.stringify(resultJson, null, 2));
}