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:如何包装长的单个函数脚本?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Windows 上使用单个 NPM 命令运行多个 NPM 命令
NPM - package.json#engines |如何指定 Python?
如何卸载 package.json (NPM) 中列出的所有依赖项?