是否有简单的方法为npm脚本提供使用信息?
理想情况下,当我运行npm run
时,我会得到这样的输出(请注意每个任务底部的描述):
Lifecycle scripts included in product-discovery-service:
start
node server.js
available via `npm run-script`:
watch
run-p watch:build watch:run
Run in development mode and rebuild/restart when changes are made
watch:build
npm run build:dev -- --watch
Probably don't need this (would be nice to be able to omit tasks like this)
watch:run
nodemon --watch build/ --inspect
Probably don't need this (would be nice to be able to omit tasks like this)
prewatch:run
wait-on --log build/server.js
Probably don't need this (would be nice to be able to omit tasks like this)
build
babel server.js --out-dir build/
Build the project
prebuild
rimraf build/
Probably don't need this (would be nice to be able to omit tasks like this)
build:dev
npm run build -- --source-maps
Probably don't need this (would be nice to be able to omit tasks like this)
看起来npm不支持这个,但也许有第三方提供解决方案?我发现npm-scripts-help,但感觉很笨。
答案 0 :(得分:0)
是的,你是正确的,npm没有提供内置功能,可以在运行npm run
时包含说明。因此,您选择的任何解决方案都会有一定程度的"感觉笨重" 与之相关。
正如您所提到的 npm-scripts-help是一个可以实现这一目标的软件包。我不知道其他类似的第三方解决方案。
以下步骤描述了如何编写简单的自定义Nodejs实用程序脚本(不使用其他第三方程序包依赖项)。然后可以通过npm-scripts调用此脚本。
创建一个简单的Nodejs实用程序脚本,如下所示。让我们将文件命名为usage.js
。
<强> usage.js 强>
const usage = `
Lifecycle scripts included in ${process.env.npm_package_name}:
start
node server.js
available via \`npm run-script\`:
watch
run-p watch:build watch:run
Run in development mode and rebuild/restart when changes are made
watch:build
npm run build:dev -- --watch
Probably don't need this (would be nice to be able to omit tasks like this)
watch:run
nodemon --watch build/ --inspect
...`
console.log('%s', usage);
将usage.js
保存在项目根目录中与package.json
存储的同一级别。
将以下usage
脚本添加到scripts
的{{1}}部分:
package.json
运行...
"scripts": {
"usage": "node usage",
...
},
...
将使用信息打印到控制台。脚本名称(即npm run usage
)必须与usage
一起提供。不幸的是,您只需运行npm run
即可记录npm的简单日志 - 其中不包含说明。
备注:强>
npm run
的第二行,我们通过以下部分引用包名称变量:usage.js
如果更改项目目录中存储${process.env.npm_package_name}
的位置,则需要根据需要在npm脚本中重新定义其路径。例如,如果您选择将其存储在名为usage.json
的文件夹中,该文件夹位于项目根目录中,则应将scripts
脚本定义如下:
usage
添加ANSI / VT100控制序列
您可以利用...
"scripts": {
"usage": "node scripts/usage",
...
},
...
中的ANSI/VT100 Control sequences为使用情况日志添加颜色和格式。
例如,在以下usage.js
中,代码为:
usage.js
\x1b[1m
...用于增加代码片段并分别将格式重置为默认值。
提示:如果需要跨平台,我建议仅使用 ANSI 8/16颜色(在上一个链接中列出)。 粗体(\x1b[0m
)的格式代码在使用 Windows命令提示符或 PowerShell 等终端的Windows cmd.exe中不起作用
usage.js (带格式)
\x1b[1m
您还可以考虑将ES6 Template Literals与process.env
和package.json vars结合使用,以引用每个npm脚本的值。例如:
const BOLD = '\x1b[1m';
const NORM = '\x1b[0m';
const formattedUsage = `
Lifecycle scripts included in ${BOLD}${process.env.npm_package_name}:${NORM}
${BOLD}start
node server.js${NORM}
available via ${BOLD}npm run-script${NORM}
${BOLD}watch
run-p watch:build watch:run${NORM}
Run in development mode and rebuild/restart when changes are made
${BOLD}watch:build
npm run build:dev -- --watch${NORM}
...`
console.log('%s', formattedUsage);