/home/techb158/.nvm/versions/node/v16.20.2/lib/node_modules/npm/lib/commands
NameSizeModeActions
access.js55850644editdlrm
adduser.js22530644editdlrm
audit.js122340644editdlrm
bin.js7290644editdlrm
birthday.js5080644editdlrm
bugs.js8150644editdlrm
cache.js72470644editdlrm
ci.js37150644editdlrm
completion.js91240644editdlrm
config.js83080644editdlrm
dedupe.js14050644editdlrm
deprecate.js21090644editdlrm
diff.js82910644editdlrm
dist-tag.js56040644editdlrm
docs.js4470644editdlrm
doctor.js94460644editdlrm
edit.js20470644editdlrm
exec.js24990644editdlrm
explain.js36390644editdlrm
explore.js23870644editdlrm
find-dupes.js6020644editdlrm
fund.js65240644editdlrm
get.js5240644editdlrm
help-search.js57550644editdlrm
help.js46370644editdlrm
hook.js40270644editdlrm
init.js69720644editdlrm
install-ci-test.js3770644editdlrm
install-test.js3740644editdlrm
install.js52360644editdlrm
link.js51410644editdlrm
ll.js2340644editdlrm
logout.js13770644editdlrm
ls.js173510644editdlrm
org.js43050644editdlrm
outdated.js90500644editdlrm
owner.js60180644editdlrm
pack.js24190644editdlrm
ping.js8740644editdlrm
pkg.js35540644editdlrm
prefix.js3430644editdlrm
profile.js115250644editdlrm
prune.js7790644editdlrm
publish.js64810644editdlrm
query.js28730644editdlrm
rebuild.js22140644editdlrm
repo.js12720644editdlrm
restart.js3510644editdlrm
root.js2980644editdlrm
run-script.js70670644editdlrm
search.js27810644editdlrm
set-script.js26980644editdlrm
set.js5720644editdlrm
shrinkwrap.js27050644editdlrm
star.js19110644editdlrm
stars.js10520644editdlrm
start.js3410644editdlrm
stop.js3360644editdlrm
team.js45450644editdlrm
test.js3360644editdlrm
token.js69540644editdlrm
uninstall.js15520644editdlrm
unpublish.js46170644editdlrm
unstar.js1820644editdlrm
update.js17380644editdlrm
version.js36900644editdlrm
view.js147230644editdlrm
whoami.js5140644editdlrm
Edit: /home/techb158/.nvm/versions/node/v16.20.2/lib/node_modules/npm/lib/commands/init.js (6972B)
const fs = require('fs') const { relative, resolve } = require('path') const mkdirp = require('mkdirp-infer-owner') const initJson = require('init-package-json') const npa = require('npm-package-arg') const rpj = require('read-package-json-fast') const libexec = require('libnpmexec') const mapWorkspaces = require('@npmcli/map-workspaces') const PackageJson = require('@npmcli/package-json') const log = require('../utils/log-shim.js') const updateWorkspaces = require('../workspaces/update-workspaces.js') const BaseCommand = require('../base-command.js') class Init extends BaseCommand { static description = 'Create a package.json file' static params = [ 'yes', 'force', 'scope', 'workspace', 'workspaces', 'workspaces-update', 'include-workspace-root', ] static name = 'init' static usage = [ ' (same as `npx )', '<@scope> (same as `npx <@scope>/create`)', ] static ignoreImplicitWorkspace = false async exec (args) { // npm exec style if (args.length) { return (await this.execCreate({ args, path: process.cwd() })) } // no args, uses classic init-package-json boilerplate await this.template() } async execWorkspaces (args, filters) { // if the root package is uninitiated, take care of it first if (this.npm.flatOptions.includeWorkspaceRoot) { await this.exec(args) } // reads package.json for the top-level folder first, by doing this we // ensure the command throw if no package.json is found before trying // to create a workspace package.json file or its folders const pkg = await rpj(resolve(this.npm.localPrefix, 'package.json')) const wPath = filterArg => resolve(this.npm.localPrefix, filterArg) const workspacesPaths = [] // npm-exec style, runs in the context of each workspace filter if (args.length) { for (const filterArg of filters) { const path = wPath(filterArg) await mkdirp(path) workspacesPaths.push(path) await this.execCreate({ args, path }) await this.setWorkspace({ pkg, workspacePath: path }) } return } // no args, uses classic init-package-json boilerplate for (const filterArg of filters) { const path = wPath(filterArg) await mkdirp(path) workspacesPaths.push(path) await this.template(path) await this.setWorkspace({ pkg, workspacePath: path }) } // reify packages once all workspaces have been initialized await this.update(workspacesPaths) } async execCreate ({ args, path }) { const [initerName, ...otherArgs] = args let packageName = initerName // Only a scope, possibly with a version if (/^@[^/]+$/.test(initerName)) { const [, scope, version] = initerName.split('@') packageName = `@${scope}/create` if (version) { packageName = `${packageName}@${version}` } } else { const req = npa(initerName) if (req.type === 'git' && req.hosted) { const { user, project } = req.hosted packageName = initerName .replace(user + '/' + project, user + '/create-' + project) } else if (req.registry) { packageName = req.name.replace(/^(@[^/]+\/)?/, '$1create-') if (req.rawSpec) { packageName += '@' + req.rawSpec } } else { throw Object.assign(new Error( 'Unrecognized initializer: ' + initerName + '\nFor more package binary executing power check out `npx`:' + '\nhttps://www.npmjs.com/package/npx' ), { code: 'EUNSUPPORTED' }) } } const newArgs = [packageName, ...otherArgs] const { color } = this.npm.flatOptions const { flatOptions, localBin, globalBin, } = this.npm const output = this.npm.output.bind(this.npm) const runPath = path const scriptShell = this.npm.config.get('script-shell') || undefined const yes = this.npm.config.get('yes') await libexec({ ...flatOptions, args: newArgs, color, localBin, globalBin, output, path, runPath, scriptShell, yes, }) } async template (path = process.cwd()) { log.pause() log.disableProgress() const initFile = this.npm.config.get('init-module') if (!this.npm.config.get('yes') && !this.npm.config.get('force')) { this.npm.output([ 'This utility will walk you through creating a package.json file.', 'It only covers the most common items, and tries to guess sensible defaults.', '', 'See `npm help init` for definitive documentation on these fields', 'and exactly what they do.', '', 'Use `npm install ` afterwards to install a package and', 'save it as a dependency in the package.json file.', '', 'Press ^C at any time to quit.', ].join('\n')) } // XXX promisify init-package-json await new Promise((res, rej) => { initJson(path, initFile, this.npm.config, (er, data) => { log.resume() log.enableProgress() log.silly('package data', data) if (er && er.message === 'canceled') { log.warn('init', 'canceled') return res() } if (er) { rej(er) } else { log.info('init', 'written successfully') res(data) } }) }) } async setWorkspace ({ pkg, workspacePath }) { const workspaces = await mapWorkspaces({ cwd: this.npm.localPrefix, pkg }) // skip setting workspace if current package.json glob already satisfies it for (const wPath of workspaces.values()) { if (wPath === workspacePath) { return } } // if a create-pkg didn't generate a package.json at the workspace // folder level, it might not be recognized as a workspace by // mapWorkspaces, so we're just going to avoid touching the // top-level package.json try { fs.statSync(resolve(workspacePath, 'package.json')) } catch (err) { return } const pkgJson = await PackageJson.load(this.npm.localPrefix) pkgJson.update({ workspaces: [ ...(pkgJson.content.workspaces || []), relative(this.npm.localPrefix, workspacePath), ], }) await pkgJson.save() } async update (workspacesPaths) { // translate workspaces paths into an array containing workspaces names const workspaces = [] for (const path of workspacesPaths) { const pkgPath = resolve(path, 'package.json') const { name } = await rpj(pkgPath) .catch(() => ({})) if (name) { workspaces.push(name) } } const { config, flatOptions, localPrefix, } = this.npm await updateWorkspaces({ config, flatOptions, localPrefix, npm: this.npm, workspaces, }) } } module.exports = Init