Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn-David Dalton <john.david.dalton@gmail.com>2018-04-19 00:01:24 +0300
committerKat Marchán <kzm@zkat.tech>2018-04-19 00:01:24 +0300
commit008a83642e04360e461f56da74b5557d5248a726 (patch)
treec9d4c873f8c042f21f48cbf27f279c84e5fa03d6 /lib/init.js
parentad7a5962d758efcbcfbd9fda9a3d8b38ddbf89a1 (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.js24
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')