UNPKG

@verdaccio/how-to-npm

Version:
73 lines (66 loc) 1.95 kB
var path = require('path') var fs = require('fs') var node = process.execPath var spawn = require('child_process').spawn var shop = require('../index.js') var concat = require('concat-stream') var mkdirp = require('mkdirp') var semver = require('semver') var util = require('util') var pidfile = path.resolve(shop.datadir, 'registry.pid') var assetdir = path.resolve(shop.datadir, 'registry') var logStream = fs.createWriteStream(path.resolve(shop.datadir, 'registry.log'), {flags: 'a'}) function log () { logStream.write(util.format.apply(util, arguments) + '\n') } if (require.main === module) { switch (process.argv[2]) { case 'daemon': daemon(process.argv.slice(3)) break case 'kill': kill() break } } exports.kill = kill function kill () { try { var pid = +fs.readFileSync(pidfile, 'ascii').trim() process.kill(pid, 'SIGKILL') } catch (er) {} try { fs.unlinkSync(pidfile) } catch (er) {} } exports.run = run function run (args) { kill() var child = spawn(node, [__filename, 'daemon'].concat(args || []), { stdio: 'ignore', detached: true, cwd: path.resolve(__dirname, '..') }) child.unref() } exports.daemon = daemon function daemon (args) { kill() var fd = fs.openSync(pidfile, 'wx') fs.writeSync(fd, process.pid + '\n') fs.closeSync(fd) var verdaccio = require('verdaccio').default var yalm = require('js-yaml') var ddd = path.join(__dirname, './_config.yaml') var yamlConfig = fs.readFileSync(ddd, 'utf8') var configJsonFormat = yalm.safeLoad(yamlConfig) var lesson = args[0] configJsonFormat.storage = path.resolve(assetdir, 'store') configJsonFormat.self_path = path.resolve(assetdir) verdaccio(configJsonFormat, 15443, ddd, '1.0.0', 'verdaccio', function(webServer, addrs, pkgName, pkgVersion) { webServer.listen(addrs.port || addrs.path, addrs.host, function() { log('%s Listening', lesson) }); }); }