diff options
author | John-David Dalton <john.david.dalton@gmail.com> | 2018-04-19 00:01:24 +0300 |
---|---|---|
committer | Kat Marchán <kzm@zkat.tech> | 2018-04-19 00:01:24 +0300 |
commit | 008a83642e04360e461f56da74b5557d5248a726 (patch) | |
tree | c9d4c873f8c042f21f48cbf27f279c84e5fa03d6 /lib/init.js | |
parent | ad7a5962d758efcbcfbd9fda9a3d8b38ddbf89a1 (diff) |
init: use npx for extended initializers (#20303)
PR-URL: https://github.com/npm/npm/pull/20303
Credit: @jdalton
Reviewed-By: @zkat
Diffstat (limited to 'lib/init.js')
-rw-r--r-- | lib/init.js | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/lib/init.js b/lib/init.js index 000fa1a5b..32e73298f 100644 --- a/lib/init.js +++ b/lib/init.js @@ -2,15 +2,37 @@ module.exports = init +var path = require('path') var log = require('npmlog') var npm = require('./npm.js') +var npx = require('libnpx') var initJson = require('init-package-json') var output = require('./utils/output.js') var noProgressTillDone = require('./utils/no-progress-while-running').tillDone +var usage = require('./utils/usage') -init.usage = 'npm init [--force|-f|--yes|-y]' +init.usage = usage( + 'init', + '\nnpm init [--force|-f|--yes|-y]' + + '\nnpm init <@scope> (same as `npx <@scope>/create`)' + + '\nnpm init [<@scope>/]<pkg> (same as `npx [<@scope>/]create-<pkg>`)' +) function init (args, cb) { + if (args.length) { + var NPM_PATH = path.resolve(__dirname, '../bin/npm-cli.js') + var initerName = args[0] + var packageName = /^@[^/]+$/.test(initerName) + ? initerName + '/create' + : initerName.replace(/^(@[^/]+\/)?/, '$1create-') + + var npxArgs = [process.argv0, '[fake arg]', '--always-spawn', packageName, ...process.argv.slice(4)] + var parsed = npx.parseArgs(npxArgs, NPM_PATH) + + return npx(parsed) + .then(() => cb()) + .catch(cb) + } var dir = process.cwd() log.pause() var initFile = npm.config.get('init-module') |