X7ROOT File Manager
Current Path:
/opt/alt/alt-nodejs24/root/usr/lib/node_modules/npm/lib/commands
opt
/
alt
/
alt-nodejs24
/
root
/
usr
/
lib
/
node_modules
/
npm
/
lib
/
commands
/
??
..
??
access.js
(6.17 KB)
??
adduser.js
(1.29 KB)
??
audit.js
(3.15 KB)
??
bugs.js
(847 B)
??
cache.js
(11.48 KB)
??
ci.js
(4.22 KB)
??
completion.js
(8.9 KB)
??
config.js
(10.99 KB)
??
dedupe.js
(1.41 KB)
??
deprecate.js
(2.43 KB)
??
diff.js
(7.98 KB)
??
dist-tag.js
(5.52 KB)
??
docs.js
(449 B)
??
doctor.js
(10.06 KB)
??
edit.js
(1.76 KB)
??
exec.js
(3.42 KB)
??
explain.js
(3.57 KB)
??
explore.js
(2.16 KB)
??
find-dupes.js
(634 B)
??
fund.js
(6.46 KB)
??
get.js
(577 B)
??
help-search.js
(5.52 KB)
??
help.js
(3.66 KB)
??
init.js
(7.07 KB)
??
install-ci-test.js
(373 B)
??
install-test.js
(370 B)
??
install.js
(5.1 KB)
??
link.js
(5.25 KB)
??
ll.js
(234 B)
??
login.js
(1.29 KB)
??
logout.js
(1.42 KB)
??
ls.js
(16.8 KB)
??
org.js
(3.98 KB)
??
outdated.js
(7.95 KB)
??
owner.js
(5.85 KB)
??
pack.js
(2.69 KB)
??
ping.js
(873 B)
??
pkg.js
(3.6 KB)
??
prefix.js
(309 B)
??
profile.js
(10.45 KB)
??
prune.js
(799 B)
??
publish.js
(9.5 KB)
??
query.js
(3.51 KB)
??
rebuild.js
(2.19 KB)
??
repo.js
(1.24 KB)
??
restart.js
(303 B)
??
root.js
(295 B)
??
run.js
(6.27 KB)
??
sbom.js
(4.42 KB)
??
search.js
(1.83 KB)
??
set.js
(671 B)
??
shrinkwrap.js
(2.65 KB)
??
star.js
(1.88 KB)
??
stars.js
(1.03 KB)
??
start.js
(293 B)
??
stop.js
(288 B)
??
team.js
(4.36 KB)
??
test.js
(288 B)
??
token.js
(5.92 KB)
??
undeprecate.js
(302 B)
??
uninstall.js
(1.52 KB)
??
unpublish.js
(5.38 KB)
??
unstar.js
(183 B)
??
update.js
(1.74 KB)
??
version.js
(3.5 KB)
??
view.js
(13.54 KB)
??
whoami.js
(527 B)
Editing: help.js
const spawn = require('@npmcli/promise-spawn') const path = require('node:path') const { openUrl } = require('../utils/open-url.js') const { glob } = require('glob') const { output, input } = require('proc-log') const localeCompare = require('@isaacs/string-locale-compare')('en') const { deref } = require('../utils/cmd-list.js') const BaseCommand = require('../base-cmd.js') const globify = pattern => pattern.split('\\').join('/') // Strips out the number from foo.7 or foo.7. or foo.7.tgz // We don't currently compress our man pages but if we ever did this would // seamlessly continue supporting it const manNumberRegex = /\.(\d+)(\.[^/\\]*)?$/ // hardcoded names for mansections // XXX: these are used in the docs workspace and should be exported // from npm so section names can changed more easily const manSectionNames = { 1: 'commands', 5: 'configuring-npm', 7: 'using-npm', } class Help extends BaseCommand { static description = 'Get help on npm' static name = 'help' static usage = ['<term> [<terms..>]'] static params = ['viewer'] static async completion (opts, npm) { if (opts.conf.argv.remain.length > 2) { return [] } const g = path.resolve(npm.npmRoot, 'man/man[0-9]/*.[0-9]') let files = await glob(globify(g)) // preserve glob@8 behavior files = files.sort((a, b) => a.localeCompare(b, 'en')) return Object.keys(files.reduce(function (acc, file) { file = path.basename(file).replace(/\.[0-9]+$/, '') file = file.replace(/^npm-/, '') acc[file] = true return acc }, { help: true })) } async exec (args) { // By default we search all of our man subdirectories, but if the user has // asked for a specific one we limit the search to just there const manSearch = /^\d+$/.test(args[0]) ? `man${args.shift()}` : 'man*' if (!args.length) { return output.standard(this.npm.usage) } // npm help foo bar baz: search topics if (args.length > 1) { return this.helpSearch(args) } // `npm help package.json` const arg = (deref(args[0]) || args[0]).replace('.json', '-json') // find either section.n or npm-section.n const f = globify(path.resolve(this.npm.npmRoot, `man/${manSearch}/?(npm-)${arg}.[0-9]*`)) const [man] = await glob(f).then(r => r.sort((a, b) => { // Because the glob is (subtly) different from manNumberRegex, // we can't rely on it passing. const aManNumberMatch = a.match(manNumberRegex)?.[1] || 999 const bManNumberMatch = b.match(manNumberRegex)?.[1] || 999 if (aManNumberMatch !== bManNumberMatch) { return aManNumberMatch - bManNumberMatch } return localeCompare(a, b) })) return man ? this.viewMan(man) : this.helpSearch(args) } helpSearch (args) { return this.npm.exec('help-search', args) } async viewMan (man) { const viewer = this.npm.config.get('viewer') if (viewer === 'browser') { return openUrl(this.npm, this.htmlMan(man), 'help available at the following URL', true) } let args = ['man', [man]] if (viewer === 'woman') { args = ['emacsclient', ['-e', `(woman-find-file '${man}')`]] } try { await input.start(() => spawn(...args, { stdio: 'inherit' })) } catch (err) { if (err.code) { throw new Error(`help process exited with code: ${err.code}`) } else { throw err } } } // Returns the path to the html version of the man page htmlMan (man) { const sect = manSectionNames[man.match(manNumberRegex)[1]] const f = path.basename(man).replace(manNumberRegex, '') return 'file:///' + path.resolve(this.npm.npmRoot, `docs/output/${sect}/${f}.html`) } } module.exports = Help
Upload File
Create Folder