X7ROOT File Manager
Current Path:
/opt/alt/alt-nodejs20/root/usr/lib/node_modules/npm/lib/commands
opt
/
alt
/
alt-nodejs20
/
root
/
usr
/
lib
/
node_modules
/
npm
/
lib
/
commands
/
ðŸ“
..
📄
access.js
(6.04 KB)
📄
adduser.js
(1.29 KB)
📄
audit.js
(3.15 KB)
📄
bugs.js
(847 B)
📄
cache.js
(7.12 KB)
📄
ci.js
(4.22 KB)
📄
completion.js
(8.9 KB)
📄
config.js
(11.18 KB)
📄
dedupe.js
(1.41 KB)
📄
deprecate.js
(2.13 KB)
📄
diff.js
(8.14 KB)
📄
dist-tag.js
(5.52 KB)
📄
docs.js
(449 B)
📄
doctor.js
(10.1 KB)
📄
edit.js
(1.76 KB)
📄
exec.js
(3.42 KB)
📄
explain.js
(3.58 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)
📄
hook.js
(3.37 KB)
📄
init.js
(6.85 KB)
📄
install-ci-test.js
(373 B)
📄
install-test.js
(370 B)
📄
install.js
(5.15 KB)
📄
link.js
(5.3 KB)
📄
ll.js
(234 B)
📄
login.js
(1.29 KB)
📄
logout.js
(1.42 KB)
📄
ls.js
(16.81 KB)
📄
org.js
(4.02 KB)
📄
outdated.js
(7.7 KB)
📄
owner.js
(5.85 KB)
📄
pack.js
(2.6 KB)
📄
ping.js
(873 B)
📄
pkg.js
(3.56 KB)
📄
prefix.js
(335 B)
📄
profile.js
(10.57 KB)
📄
prune.js
(799 B)
📄
publish.js
(7.19 KB)
📄
query.js
(3.51 KB)
📄
rebuild.js
(2.19 KB)
📄
repo.js
(1.25 KB)
📄
restart.js
(310 B)
📄
root.js
(295 B)
📄
run-script.js
(6.04 KB)
📄
sbom.js
(4.51 KB)
📄
search.js
(1.83 KB)
📄
set.js
(671 B)
📄
shrinkwrap.js
(2.65 KB)
📄
star.js
(1.87 KB)
📄
stars.js
(1.03 KB)
📄
start.js
(300 B)
📄
stop.js
(295 B)
📄
team.js
(4.36 KB)
📄
test.js
(295 B)
📄
token.js
(6.02 KB)
📄
uninstall.js
(1.52 KB)
📄
unpublish.js
(5.27 KB)
📄
unstar.js
(183 B)
📄
update.js
(1.72 KB)
📄
version.js
(3.54 KB)
📄
view.js
(12.8 KB)
📄
whoami.js
(527 B)
Editing: install.js
const { readdir } = require('node:fs/promises') const { resolve, join } = require('node:path') const { log } = require('proc-log') const runScript = require('@npmcli/run-script') const pacote = require('pacote') const checks = require('npm-install-checks') const reifyFinish = require('../utils/reify-finish.js') const ArboristWorkspaceCmd = require('../arborist-cmd.js') class Install extends ArboristWorkspaceCmd { static description = 'Install a package' static name = 'install' // These are in the order they will show up in when running "-h" // If adding to this list, consider adding also to ci.js static params = [ 'save', 'save-exact', 'global', 'install-strategy', 'legacy-bundling', 'global-style', 'omit', 'include', 'strict-peer-deps', 'prefer-dedupe', 'package-lock', 'package-lock-only', 'foreground-scripts', 'ignore-scripts', 'audit', 'bin-links', 'fund', 'dry-run', 'cpu', 'os', 'libc', ...super.params, ] static usage = ['[<package-spec> ...]'] static async completion (opts) { const { partialWord } = opts // install can complete to a folder with a package.json, or any package. // if it has a slash, then it's gotta be a folder // if it starts with https?://, then just give up, because it's a url if (/^https?:\/\//.test(partialWord)) { // do not complete to URLs return [] } if (/\//.test(partialWord)) { // Complete fully to folder if there is exactly one match and it // is a folder containing a package.json file. If that is not the // case we return 0 matches, which will trigger the default bash // complete. const lastSlashIdx = partialWord.lastIndexOf('/') const partialName = partialWord.slice(lastSlashIdx + 1) const partialPath = partialWord.slice(0, lastSlashIdx) || '/' const isDirMatch = async sibling => { if (sibling.slice(0, partialName.length) !== partialName) { return false } try { const contents = await readdir(join(partialPath, sibling)) const result = (contents.indexOf('package.json') !== -1) return result } catch (er) { return false } } try { const siblings = await readdir(partialPath) const matches = [] for (const sibling of siblings) { if (await isDirMatch(sibling)) { matches.push(sibling) } } if (matches.length === 1) { return [join(partialPath, matches[0])] } // no matches return [] } catch (er) { return [] // invalid dir: no matching } } // Note: there used to be registry completion here, // but it stopped making sense somewhere around // 50,000 packages on the registry } async exec (args) { // the /path/to/node_modules/.. const globalTop = resolve(this.npm.globalDir, '..') const ignoreScripts = this.npm.config.get('ignore-scripts') const isGlobalInstall = this.npm.global const where = isGlobalInstall ? globalTop : this.npm.prefix const forced = this.npm.config.get('force') const scriptShell = this.npm.config.get('script-shell') || undefined // be very strict about engines when trying to update npm itself const npmInstall = args.find(arg => arg.startsWith('npm@') || arg === 'npm') if (isGlobalInstall && npmInstall) { const npmOptions = this.npm.flatOptions const npmManifest = await pacote.manifest(npmInstall, npmOptions) try { checks.checkEngine(npmManifest, npmManifest.version, process.version) } catch (e) { if (forced) { log.warn( 'install', /* eslint-disable-next-line max-len */ `Forcing global npm install with incompatible version ${npmManifest.version} into node ${process.version}` ) } else { throw e } } } // don't try to install the prefix into itself args = args.filter(a => resolve(a) !== this.npm.prefix) // `npm i -g` => "install this package globally" if (where === globalTop && !args.length) { args = ['.'] } // throw usage error if trying to install empty package // name to global space, e.g: `npm i -g ""` if (where === globalTop && !args.every(Boolean)) { throw this.usageError() } const Arborist = require('@npmcli/arborist') const opts = { ...this.npm.flatOptions, auditLevel: null, path: where, add: args, workspaces: this.workspaceNames, } const arb = new Arborist(opts) await arb.reify(opts) if (!args.length && !isGlobalInstall && !ignoreScripts) { const scripts = [ 'preinstall', 'install', 'postinstall', 'prepublish', // XXX(npm9) should we remove this finally?? 'preprepare', 'prepare', 'postprepare', ] for (const event of scripts) { await runScript({ path: where, args: [], scriptShell, stdio: 'inherit', event, }) } } await reifyFinish(this.npm, arb) } } module.exports = Install
Upload File
Create Folder