有没有办法检查一个package-lock.json
文件是否与package.json
兼容,而不运行npm安装
?兼容意味着指定的版本package.json
可以通过package-lock.json
来实现。
当前方法
我目前正在通过运行npm install
并检查package lock.json
是否更改为:
git clone https://github.com/my/codebase
cd codebase
npm install
if [[ git diff-index --quiet HEAD -- package-lock.json ]]; then
echo 'ERROR: npm install changed package-lock.json'
fi
用例
我想在持续集成中添加一个测试,以确保如果开发人员修改了package.json
,他们也会相应地更新package lock.json
。这一点很重要的原因是我们的持续集成使用了npm ci
,而不是npm install
npmci
仅引用package lock.json
,因此如果开发人员不更新锁文件,持续集成设置将与他们期望的不匹配。
我花了几个月的时间才发现,npmci
不是你的朋友,因为它将无法将更新的引擎从package.json同步到
package lock.json。因此,我认为答案是
npm安装——生产`
所有的荣誉都应该归他所有https://stackoverflow.com/a/19824154/99834 这就详细地解释了。为了方便起见,我将提到最重要的几点:
npm安装
将安装/更新devDependence,除非添加了-生产
标志npm更新
将忽略devDependence除非--dev
标志被添加正如评论中提到的,有一个npm ci
命令,如果package.json
与package-lock.json
不同步,该命令将抛出一个错误。
以下是我用来“测试”他们是否平等的方法:
ERRORS=0
npm ci
if [[ "$?" -ne 0 ]]; then
echo "Dependency installation failed!"
ERRORS=$(($ERRORS+1))
fi
我正在寻找一种更好的方法来实现这一点,因为这实际上会删除整个node\u modules
目录,确认奇偶校验,然后继续安装锁定的版本(如果一切正常),但这需要一些时间,具体取决于软件包的数量。
npm@5已经发布,它有一个新的功能文件(在之后),这让我很困惑。我想知道,这个文件有什么效果?
问题内容: 要锁定项目上安装的依赖项的版本,该命令将创建一个名为的文件。这是从Node.js v8.0.0和npm v5.0.0开始的 ,您可能已经知道了。 尽管有Node.js和npm关于提交此文件的建议,但是关于何时应避免这样做的一些担忧也是一个选择。通常,我们致力于项目,但这是一个奇特的问题。 虽然我们默认情况下应该提交文件,但是我们有一个特定的情况,我们不应该提交。例如,如果我们要测试项目
问题内容: npm 5已于今天发布 ,其中一项新功能包括通过创建文件进行确定性安装。 该文件应该保留在源代码管理中吗? 我假设它类似于和,这两个都应该保留在源代码管理中。 问题答案: 是的,旨在被检查到源代码管理中。如果您使用的是npm 5,则可能会在命令行上看到:根据: 会为npm修改树或的任何操作自动生成。它描述了生成的确切树,因此无论中间依赖项更新如何,后续安装都可以生成相同的树。 该文件旨
所以,我有这个包裹,在package-lock.json里面: 该漏洞是:“大括号”:“^1.8.2”,当我运行npm audit时,它表示已修复为2.3。1,但我似乎无法更新它,或者只是不知道如何更新。 我尝试过的事情: npm安装micromatch和支架,然后进行npm审计修复 npm安装 从npm依赖关系中,可能有一些事情我不理解。那么我该如何解决这个问题呢? 为软件包编辑。json
QSTN:当它是叶节点时,为什么需要初始化ls=0或rs=0。考虑链接中给出的树,如果我们到达节点4,如果(node==NULL isLeaf(node))返回1;上面的代码将1(true)返回到调用它的函数,即节点10,类似地,右侧将true返回到节点10,因此我们现在可以进入下面的循环,因为如果(isSumTree(node->left)&&isSumTree(node->left)&&isS
我错过了什么?如何让npm真正尊重我的锁文件?