pertain
Version:
Automated pub/sub across project dependencies. Run code from any installed package based on declarative rules in package.json
41 lines • 2.6 kB
JavaScript
import objectPath from 'object-path';
import { readFileSync } from 'fs';
import path from 'path';
/**
* Lazy-loading proxy for package.json. A subset of properties are available,
* and a static method
* `PackageJson.lookup(package: PackageJson, dotPath: string)`
* exists for looking up other arbitrary properties.
*
* This speeds up dependency gathering; it won't be necessary to read all
* package files from disk.
*/
export default class PackageJson {
json;
lookup(dotPath, fallback) {
return this.getJson().get(dotPath) || fallback;
}
get dependencies() {
return this.lookup('dependencies', {});
}
get devDependencies() {
return this.lookup('devDependencies', {});
}
get name() {
return this.lookup('name');
}
get peerDependencies() {
return this.lookup('peerDependencies', {});
}
modulePath;
constructor(modulePath) {
this.modulePath = modulePath;
}
getJson() {
if (!this.json) {
this.json = objectPath(JSON.parse(readFileSync(path.join(this.modulePath, 'package.json'), 'utf8')));
}
return this.json;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFja2FnZUpzb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvUGFja2FnZUpzb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxVQUFVLE1BQU0sYUFBYSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDbEMsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBU3hCOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLE9BQU8sT0FBTyxXQUFXO0lBQzlCLElBQUksQ0FBdUM7SUFDcEMsTUFBTSxDQUFJLE9BQWUsRUFBRSxRQUFZO1FBQzVDLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxRQUFRLENBQUM7SUFDakQsQ0FBQztJQUNELElBQVcsWUFBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFDRCxJQUFXLGVBQWU7UUFDeEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFDRCxJQUFXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUNELElBQVcsZ0JBQWdCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ08sVUFBVSxDQUFTO0lBQzNCLFlBQVksVUFBa0I7UUFDNUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7SUFDL0IsQ0FBQztJQUNPLE9BQU87UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNkLElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUNwQixJQUFJLENBQUMsS0FBSyxDQUNSLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQ2pFLENBQ0YsQ0FBQztTQUNIO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7Q0FDRiJ9