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

Posted

技术标签:

【中文标题】npm package.json:如何包装长的单个函数脚本?【英文标题】:npm package.json: How to wrap long single function scripts? 【发布时间】:2019-11-12 12:25:30 【问题描述】:

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

"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",

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

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

【问题讨论】:

How can I continue a text string in a JSON object onto another line?的可能重复 【参考方案1】:

您可以编写一个 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

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

"audit:depcheck": "./npx_depcheck.sh",

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

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

【讨论】:

这将在跨平台失败,即通过没有sh 的窗口cmd.exe。最好通过 npm-scripts 调用 node.js 脚本而不是 .sh 脚本,例如"scripts": "audit:depcheck": "node ./npx_depcheck.js" 。在npx_depcheck.js shell 中使用例如npx ... 命令child_process.exec()child_process.execSync().

以上是关于npm package.json:如何包装长的单个函数脚本?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 package.json 中有多个入口点?

如何在 Windows 上使用单个 NPM 命令运行多个 NPM 命令

NPM - package.json#engines |如何指定 Python?

如何卸载 package.json (NPM) 中列出的所有依赖项?

如何使用 Gulp 将多个 (npm) package.json 文件合并为一个?

如何在 package.json 中使用 $npm_config_?