在脚本中,我想验证node_modules/的内容是否与package-lock.json中定义的内容相对应,或者是否需要(昂贵的)npm ci。我想我可以运行npm install --dry-run并解析以下行:
node_modules/
package-lock.json
npm ci
npm install --dry-run
added 670 packages, removed 390 packages, updated 421 packages and audited 101551 packages in 16.337s
但这似乎很脆弱。有更好的办法吗?
4nkexdtk1#
仅显示node_modules内容与package-lock.json内容的差异(如果有):
node_modules
npm list 2> /dev/null | grep 'invalid: "'
2> /dev/null屏蔽npm list的错误,然后greps作为有限的差异列表的稍微更可读的标准输出。我更喜欢grep标准输出,因为错误输出不报告package-lock.json版本,我发现它是一个有价值的参考,可以一目了然。编辑:列出错误仍然更安全,因为缺少依赖项符合grep“missing”,而不是“invalid”
2> /dev/null
npm list
npm list 2>&1 | grep -E '^npm ERR! \w+: '
1条答案
按热度按时间4nkexdtk1#
仅显示
node_modules
内容与package-lock.json
内容的差异(如果有):2> /dev/null
屏蔽npm list
的错误,然后greps作为有限的差异列表的稍微更可读的标准输出。我更喜欢grep标准输出,因为错误输出不报告
package-lock.json
版本,我发现它是一个有价值的参考,可以一目了然。编辑:列出错误仍然更安全,因为缺少依赖项符合grep“missing”,而不是“invalid”