我一直在使用Clojure、ClojureScript、lein、影子cljs、reagent、试剂、Emacs和苹果酒来开发Clojure/ClojureScript动态web应用程序项目。
通常,我通过在Emacs中执行命令cider-jack-in-cljs来构建项目,选择shadow-cljs,然后选择shadow作为REPL类型,最后选择app作为构建选项。
目前,该项目面临可再现性危机。很难知道项目上正在更改哪些依赖项。此外,每个开发人员都有自己的本地开发环境。事情变得更糟了,因为这种“混乱”甚至可能发生在部署环境中,因为它取决于执行部署的机器(没有CI/CD,部署是手动的)。
重要的是要理解为什么/如何/何时/哪些依赖项在每个版本之后被更改。
有一个有趣的命令名为shadow-cljs shadow.cljs.build-report (参见文档)。它可以用npx shadow-cljs run shadow.cljs.build-report执行。此命令生成一个报表,将依赖树显示为原始HTML。
一种方法是将此命令的输出保持在版本控制下,并使用git diffs检查差异。
但是,一位同事说package-lock.json已经这么做了(参见文档)。因此,我开始怀疑两者之间的区别。
我至少可以看到一个:shadow.cljs.build-report输出的文件在web浏览器中呈现得很好,因此,对人的可读性来说感觉更好。
还有什么不同吗?他们是什么?
发布于 2022-09-24 06:39:08
只生成报告报表生成信息。它确实列出了与版本一起使用的所有依赖项,但它没有锁定。因此,它不有助于构建可靠性,它只是作为一个控制。
package-lock.json 您应该保持的版本控制。是由npm install使用的,以确保每次运行时都会安装所有相同的版本。见文档。
如果没有锁文件,npm install将以不确定的方式安装软件包。不幸的是,大多数npm包使用版本范围来声明依赖项。因此,如果没有锁文件,您就永远无法确定实际会得到哪个版本。
https://stackoverflow.com/questions/73833731
复制相似问题