UNPKG

npmreserve

Version:
63 lines (53 loc) 1.73 kB
"use strict"; // Dependencies var Tmp = require("tmp"), Fs = require("fs"), Ul = require("ul"), ExecLimiter = require("exec-limiter"), Validate = require("validate-npm-package-name"); // Create the exec limiter var exl = new ExecLimiter(10); /** * NpmReserve * Reserves a package name on NPM. * * @name NpmReserve * @function * @param {String|Object} options The package name or the package object itself. * @param {Function} callback The callback function * @return {NpmReserve} The `NpmReserve` function. */ function NpmReserve(options, callback) { if (typeof options === "string") { options = { name: options }; } options = Ul.merge(options, { version: "0.0.0", description: "This package name is reserved." }); if (Validate(options.name).validForNewPackages === false) { return callback(new Error("Invalid NPM name.")); } // Create a temp dir Tmp.dir(function (err, path) { if (err) { return callback(err); } // Create the package.json file Fs.writeFile(path + "/package.json", JSON.stringify(options, null, 2), function (err) { if (err) { return callback(err); } // Write the readme file Fs.writeFile(path + "/README.md", "# " + options.name + "\n" + options.description + "\n\nThis was generated using [`npmreserve`](https://github.com/IonicaBizau/npmreserve)", function (err) { if (err) { return callback(err); } exl.add("npm publish", { cwd: path }, callback); }); }); }); } module.exports = NpmReserve;