build(aio): ability to generate zips
This commit is contained in:

committed by
Pete Bacon Darwin

parent
648de7dd86
commit
50174d9fb5
@ -0,0 +1,55 @@
|
||||
'use strict';
|
||||
|
||||
const path = require('canonical-path');
|
||||
|
||||
const examplesPath = path.resolve(__dirname, '../../../examples');
|
||||
const packageFolder = path.resolve(__dirname);
|
||||
|
||||
class PackageJsonCustomizer {
|
||||
constructor() {
|
||||
this.dependenciesPackageJson = require(path.join(examplesPath, '/shared/package.json'));
|
||||
this.scriptsPackageJson = require(path.join(examplesPath, '/shared/boilerplate/package.json'));
|
||||
this.basePackageJson = require(`${packageFolder}/base.json`);
|
||||
}
|
||||
|
||||
generate(type = 'systemjs') {
|
||||
let packageJson = require(`${packageFolder}/package.json`);
|
||||
let rules = require(`${packageFolder}/${type}.json`);
|
||||
|
||||
this._mergeJSON(rules, this.basePackageJson);
|
||||
|
||||
rules.scripts.forEach((r) => {
|
||||
const scriptName = r.name;
|
||||
const script = this.scriptsPackageJson.scripts[scriptName];
|
||||
const finalName = r.rename ? r.rename : r.name;
|
||||
const finalScript = r.command ? r.command : script;
|
||||
packageJson.scripts[finalName] = finalScript;
|
||||
});
|
||||
|
||||
rules.dependencies.forEach((name) => {
|
||||
const version = this.dependenciesPackageJson.dependencies[name];
|
||||
packageJson.dependencies[name] = version;
|
||||
});
|
||||
|
||||
rules.devDependencies.forEach((name) => {
|
||||
const version = this.dependenciesPackageJson.devDependencies[name];
|
||||
packageJson.devDependencies[name] = version;
|
||||
});
|
||||
|
||||
return JSON.stringify(packageJson, null, 2);
|
||||
}
|
||||
|
||||
_mergeJSON(json1,json2) {
|
||||
var result = json1 ;
|
||||
for (var prop in json2)
|
||||
{
|
||||
if (json2.hasOwnProperty(prop))
|
||||
{
|
||||
result[prop] = (result[prop].concat(json2[prop])).sort();
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = PackageJsonCustomizer;
|
Reference in New Issue
Block a user