Source: index.js

/**
 * mock-npm-install
 * @module mock-npm-install
 */

var fs = require('fs');
var path = require('path');
var defaults = require('lodash.defaults');
var rpkg = require('./lib/random-package.js');
var rimraf = require('rimraf');

module.exports = {

    /**
     * install mock package
     * @param {object} opts
     * @param {object=}         opts.package obj representation of package.json
     * @param {nodeModulesDir=} opts.nodeModulesDir
     * @return {object} package.json js obj rep
     */
    install: function(opts) {
        opts = opts || {};
        opts = defaults(opts, {
            nodeModulesDir: path.resolve(process.cwd(), 'node_modules'),
            package: rpkg.gen(opts.package)
        });
        fs.mkdirSync(path.resolve(opts.nodeModulesDir, opts.package.name));
        fs.writeFileSync(
            path.resolve(opts.nodeModulesDir, opts.package.name, 'package.json'),
            JSON.stringify(opts.package, null, 2)
        );
        return opts.package;
    },

    /**
     * remove mock package
     * @param {object} opts
     * @param {string}   opts.name package name to remove
     * @param {nodeModulesDir=} opts.nodeModulesDir
     */
    remove: function(opts) {
        if (!opts || !opts.name || typeof opts.name !== 'string') {
            throw new TypeError('package name option expected');
        }
        opts = defaults(opts, {
            nodeModulesDir: path.resolve(process.cwd(), 'node_modules')
        });
        rimraf.sync(path.resolve(opts.nodeModulesDir, opts.name));
    }

};