/snap/node/11782/lib/node_modules/npm/lib/commands
NameSizeModeActions
access.js61890644editdlrm
adduser.js13210644editdlrm
audit.js32210644editdlrm
bugs.js8470644editdlrm
cache.js72920644editdlrm
ci.js43250644editdlrm
completion.js91160644editdlrm
config.js114440644editdlrm
dedupe.js14430644editdlrm
deprecate.js21820644editdlrm
diff.js81910644editdlrm
dist-tag.js56540644editdlrm
docs.js4490644editdlrm
doctor.js103470644editdlrm
edit.js18040644editdlrm
exec.js35000644editdlrm
explain.js36610644editdlrm
explore.js22110644editdlrm
find-dupes.js6340644editdlrm
fund.js66100644editdlrm
get.js5770644editdlrm
help-search.js56500644editdlrm
help.js37520644editdlrm
hook.js34530644editdlrm
init.js70180644editdlrm
install-ci-test.js3730644editdlrm
install-test.js3700644editdlrm
install.js52770644editdlrm
link.js53810644editdlrm
ll.js2340644editdlrm
login.js13180644editdlrm
logout.js14530644editdlrm
ls.js186290644editdlrm
org.js41210644editdlrm
outdated.js78800644editdlrm
owner.js59880644editdlrm
pack.js26650644editdlrm
ping.js8730644editdlrm
pkg.js36410644editdlrm
prefix.js3350644editdlrm
profile.js108190644editdlrm
prune.js7990644editdlrm
publish.js75520644editdlrm
query.js35950644editdlrm
rebuild.js22410644editdlrm
repo.js12780644editdlrm
restart.js3100644editdlrm
root.js2950644editdlrm
run-script.js62210644editdlrm
sbom.js46160644editdlrm
search.js18770644editdlrm
set.js6710644editdlrm
shrinkwrap.js27120644editdlrm
star.js19110644editdlrm
stars.js10520644editdlrm
start.js3000644editdlrm
stop.js2950644editdlrm
team.js44610644editdlrm
test.js2950644editdlrm
token.js61600644editdlrm
uninstall.js15610644editdlrm
unpublish.js53940644editdlrm
unstar.js1830644editdlrm
update.js17650644editdlrm
version.js36280644editdlrm
view.js131060644editdlrm
whoami.js5270644editdlrm
Edit: /snap/node/11782/lib/node_modules/npm/lib/commands/run-script.js (6221B)
const { output } = require('proc-log') const pkgJson = require('@npmcli/package-json') const BaseCommand = require('../base-cmd.js') const { getError } = require('../utils/error-message.js') const { outputError } = require('../utils/output-error.js') class RunScript extends BaseCommand { static description = 'Run arbitrary package scripts' static params = [ 'workspace', 'workspaces', 'include-workspace-root', 'if-present', 'ignore-scripts', 'foreground-scripts', 'script-shell', ] static name = 'run-script' static usage = [' [-- ]'] static workspaces = true static ignoreImplicitWorkspace = false static isShellout = true static checkDevEngines = true static async completion (opts, npm) { const argv = opts.conf.argv.remain if (argv.length === 2) { const { content: { scripts = {} } } = await pkgJson.normalize(npm.localPrefix) .catch(() => ({ content: {} })) if (opts.isFish) { return Object.keys(scripts).map(s => `${s}\t${scripts[s].slice(0, 30)}`) } return Object.keys(scripts) } } async exec (args) { if (args.length) { await this.#run(args, { path: this.npm.localPrefix }) } else { await this.#list(this.npm.localPrefix) } } async execWorkspaces (args) { await this.setWorkspaces() const ws = [...this.workspaces.entries()] for (const [workspace, path] of ws) { const last = path === ws.at(-1)[1] if (!args.length) { const newline = await this.#list(path, { workspace }) if (newline && !last) { output.standard('') } continue } const pkg = await pkgJson.normalize(path).then(p => p.content) try { await this.#run(args, { path, pkg, workspace }) } catch (e) { const err = getError(e, { npm: this.npm, command: null }) outputError({ ...err, error: [ ['', `Lifecycle script \`${args[0]}\` failed with error:`], ...err.error, ['workspace', pkg._id || pkg.name], ['location', path], ], }) process.exitCode = err.exitCode if (!last) { output.error('') } } } } async #run ([event, ...args], { path, pkg, workspace }) { const runScript = require('@npmcli/run-script') pkg ??= await pkgJson.normalize(path).then(p => p.content) const { scripts = {} } = pkg if (event === 'restart' && !scripts.restart) { scripts.restart = 'npm stop --if-present && npm start' } else if (event === 'env' && !scripts.env) { const { isWindowsShell } = require('../utils/is-windows.js') scripts.env = isWindowsShell ? 'SET' : 'env' } pkg.scripts = scripts if ( !Object.prototype.hasOwnProperty.call(scripts, event) && !(event === 'start' && (await runScript.isServerPackage(path))) ) { if (this.npm.config.get('if-present')) { return } const suggestions = require('../utils/did-you-mean.js')(pkg, event) const wsArg = workspace && path !== this.npm.localPrefix ? ` --workspace=${pkg._id || pkg.name}` : '' throw new Error([ `Missing script: "${event}"${suggestions}\n`, 'To see a list of scripts, run:', ` npm run${wsArg}`, ].join('\n')) } // positional args only added to the main event, not pre/post const events = [[event, args]] if (!this.npm.config.get('ignore-scripts')) { if (scripts[`pre${event}`]) { events.unshift([`pre${event}`, []]) } if (scripts[`post${event}`]) { events.push([`post${event}`, []]) } } for (const [ev, evArgs] of events) { await runScript({ path, // this || undefined is because runScript will be unhappy with the // default null value scriptShell: this.npm.config.get('script-shell') || undefined, stdio: 'inherit', pkg, event: ev, args: evArgs, }) } } async #list (path, { workspace } = {}) { const { scripts = {}, name, _id } = await pkgJson.normalize(path).then(p => p.content) const scriptEntries = Object.entries(scripts) if (this.npm.silent) { return } if (this.npm.config.get('json')) { output.buffer(workspace ? { [workspace]: scripts } : scripts) return } if (!scriptEntries.length) { return } if (this.npm.config.get('parseable')) { output.standard(scriptEntries .map((s) => (workspace ? [workspace, ...s] : s).join(':')) .join('\n') .trim()) return } const cmdList = [ 'prepare', 'prepublishOnly', 'prepack', 'postpack', 'dependencies', 'preinstall', 'install', 'postinstall', 'prepublish', 'publish', 'postpublish', 'prerestart', 'restart', 'postrestart', 'prestart', 'start', 'poststart', 'prestop', 'stop', 'poststop', 'pretest', 'test', 'posttest', 'preuninstall', 'uninstall', 'postuninstall', 'preversion', 'version', 'postversion', ] const [cmds, runScripts] = scriptEntries.reduce((acc, s) => { acc[cmdList.includes(s[0]) ? 0 : 1].push(s) return acc }, [[], []]) const { reset, bold, cyan, dim, blue } = this.npm.chalk const pkgId = `in ${cyan(_id || name)}` const title = (t) => reset(bold(t)) if (cmds.length) { output.standard(`${title('Lifecycle scripts')} included ${pkgId}:`) for (const [k, v] of cmds) { output.standard(` ${k}`) output.standard(` ${dim(v)}`) } } if (runScripts.length) { const via = `via \`${blue('npm run-script')}\`:` if (!cmds.length) { output.standard(`${title('Scripts')} available ${pkgId} ${via}`) } else { output.standard(`available ${via}`) } for (const [k, v] of runScripts) { output.standard(` ${k}`) output.standard(` ${dim(v)}`) } } // Return true to indicate that something was output for this path // that should be separated from others return true } } module.exports = RunScript