UNPKG

npm-gui

Version:

Graphic User Interface for NPM packages/tasks for front and back -end users.

99 lines (73 loc) 2.41 kB
'use strict'; var helpers = require('./helpers.js'); var fs = require('fs'); module.exports.PackageJson = PackageJson; function PackageJson(path) { this.getDependencies = getDependencies; this.getDependenciesArray = getDependenciesArray; this.removeDependence = removeDependence; this.getDevDependencies = getDevDependencies; this.getDevDependenciesArray = getDevDependenciesArray; this.removeDevDependence = removeDevDependence; this.getTasks = getTasks; this.getTasksArray = getTasksArray; this.removeTask = removeTask; this.addTask = addTask; this.getBin = getBin; var parsedPackage = JSON.parse(fs.readFileSync(path || './package.json', 'utf-8')); ////////////////////////////////// function remove(from, what) { delete from[what]; save(); } function add(to, what, value) { to[what] = value; save(); } function buildArrayFromObject(obj) { var preparedArray = []; helpers.buildArrayFromObject(obj, preparedArray, 'key', 'value'); return preparedArray; } /** Dependencies **/ function getDependencies() { return parsedPackage.dependencies; } function getDependenciesArray() { return buildArrayFromObject(getDependencies()); } function removeDependence(name) { remove(parsedPackage.dependencies, name); } /** Dev Dependencies **/ function getDevDependencies() { return parsedPackage.devDependencies; } function getDevDependenciesArray() { return buildArrayFromObject(getDevDependencies()); } function removeDevDependence(name) { remove(parsedPackage.devDependencies, name); } /**Scripts **/ function getTasks() { return parsedPackage.scripts; } function getTasksArray() { return buildArrayFromObject(getTasks()); } function removeTask(name) { remove(parsedPackage.scripts, name); } function addTask(name, command) { add(parsedPackage.scripts, name, command); } /** others **/ function save() { fs.writeFileSync('./package.json', JSON.stringify(parsedPackage, null, 2)); } function getBin() { if (!parsedPackage.bin) return; return typeof parsedPackage.bin === 'string' ? parsedPackage.bin : parsedPackage.bin[parsedPackage.name]; } }