npm package.json:如何包装长的单函数脚本?

Jef*_*ner 6 npm package.json npm-scripts

我已经创建了一个npm 包脚本npx depcheck,它的参数之一是--ignore,它的值越来越长,我预计会越来越长。

"audit:depcheck": "npx depcheck --specials=bin --ignore-dirs=dist,node_modules --ignores=tslint,gts,ts-node,ts-node-dev,typescript,mocha,winston,passport-springcm,passport-box,passport-dropbox-oauth2,passport-google-oauth20,passport-microsoft,mocha,nyc",
Run Code Online (Sandbox Code Playgroud)

尝试过:我曾尝试将很长的脚本简单地分成新行,但这种方法不符合 JSON 标准。

目标:做同样的事情,但在 110 个字符宽度的编辑器中可读。

Ben*_*zló 6

您可以编写一个 shell 脚本,例如(不要完全复制粘贴它,只是为了了解想法):

#!/usr/bin/env bash
npx depcheck --specials=bin --ignore-dirs=dist,node_modules --ignores=tslint,gts,ts-node,ts-node-dev,typescript,mocha,winston,passport-springcm,passport-box,passport-dropbox-oauth2,passport-google-oauth20,passport-microsoft,mocha,nyc
Run Code Online (Sandbox Code Playgroud)

例如,将其命名为描述性名称npx_depcheck.sh或您想要的其他名称。然后从以下位置调用 shell 脚本package.json

"audit:depcheck": "./npx_depcheck.sh",
Run Code Online (Sandbox Code Playgroud)

注意:确保您的脚本可以运行:chmod u+x ./npx_depcheck.sh

编辑:正如 @RobC 所写,该解决方案期望系统有一个 shell。要点是,您可以附加任何类型的脚本,只需记住不同的环境有不同的运行时和工具(Node.js 脚本是有意义的,因为您要运行应用程序的环境很可能安装了 Node.JS )。

  • 这将导致跨平台失败,即通过没有“sh”的 Windows“cmd.exe”。最好通过 npm-scripts 调用 _node.js_ 脚本而不是 `.sh` 脚本,例如 `"scripts": { "audit:depcheck": "node ./npx_depcheck.js" }`。在 `npx_depcheck.js` 中,使用 [`child_process.exec()`](https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback) 或 [`child_process.exec()`] 来 shell 出 `npx ...` 命令。 execSync()`](https://nodejs.org/api/child_process.html#child_process_child_process_execsync_command_options)。 (11认同)