D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
self
/
root
/
opt
/
alt
/
alt-nodejs19
/
root
/
usr
/
lib
/
node_modules
/
npm
/
lib
/
utils
/
Filename :
npm-usage.js
back
Copy
const { commands } = require('./cmd-list') const COL_MAX = 60 const COL_MIN = 24 const COL_GUTTER = 16 const INDENT = 4 const indent = (repeat = INDENT) => ' '.repeat(repeat) const indentNewline = (repeat) => `\n${indent(repeat)}` module.exports = async (npm) => { const browser = npm.config.get('viewer') === 'browser' ? ' (in a browser)' : '' const allCommands = npm.config.get('long') ? await cmdUsages(npm) : cmdNames() return `npm <command> Usage: npm install install all the dependencies in your project npm install <foo> add the <foo> dependency to your project npm test run this project's tests npm run <foo> run the script named <foo> npm <command> -h quick help on <command> npm -l display usage info for all commands npm help <term> search for help on <term>${browser} npm help npm more involved overview${browser} All commands: ${allCommands} Specify configs in the ini-formatted file: ${indent() + npm.config.get('userconfig')} or on the command line via: npm <command> --key=value More configuration info: npm help config Configuration fields: npm help 7 config npm@${npm.version} ${npm.npmRoot}` } const cmdNames = () => { const out = [''] const line = !process.stdout.columns ? COL_MAX : Math.min(COL_MAX, Math.max(process.stdout.columns - COL_GUTTER, COL_MIN)) let l = 0 for (const c of commands) { if (out[l].length + c.length + 2 < line) { out[l] += ', ' + c } else { out[l++] += ',' out[l] = c } } return indentNewline() + out.join(indentNewline()).slice(2) } const cmdUsages = async (npm) => { // return a string of <command>: <usage> let maxLen = 0 const set = [] for (const c of commands) { const { usage } = await npm.cmd(c) set.push([c, usage.split('\n')]) maxLen = Math.max(maxLen, c.length) } return set.map(([name, usageLines]) => { const gutter = indent(maxLen - name.length + 1) const usage = usageLines.join(indentNewline(INDENT + maxLen + 1)) return indentNewline() + name + gutter + usage }).join('\n') }