在部署云功能时,有没有办法控制安装的依赖项(和瞬态依赖项)的版本?
由于cloud function runtime使用节点v6.11.5
,我假设它使用分布在该节点版本的npm v3.10.10
。这个版本的npm不支持package.lock
(在npm v5.0.0
中添加)。
我在^
中将所有版本设置为固定版本(删除package.json
)并将save-exact=true
添加到我的.npmrc
文件中,但这只会控制直接依赖项。瞬态依赖关系不会以这种方式锁定。
有没有办法控制云功能中所有已安装的依赖版本? npm shrinkwrap.json
很荣幸吗?
我在a question小组发布了Cloud Functions Beta Testers,他们确认在部署到云功能时npm-shrinkwrap.json
不受尊重。
产品经理的回复:
目前,我们不支持npm-shrinkwrap.json文件。当我们考虑运行时策略时,我们正在考虑对依赖关系管理进行一些改进,这是我们肯定会考虑的建议。
正如他们所建议的,我在他们的公共问题跟踪器上创建了an issue。如果这也是您想要的,请添加您对该问题的支持(通过主演)!
作为一名高级node.js开发人员,拥有可重复安装的方法对于提供具有生产价值的代码至关重要。
npm-shrinkwrap.json
和package-lock.json
behave differently仅从NPM包作者/ mantainer的角度来看
package-lock.json
将不会发布到NPM注册表(但它将保留源代码)并保证项目的任何作者/ mantainer将获得相同的依赖项。
相反,npm-shrinkwrap.json
意味着要发布到NPM注册表,并保证不仅作者/ mantainers而且安装包的用户获得相同的依赖。
由于您的项目与创建NPM包无关,因此您可以依赖npm-shrinkwrap.json
使用任何NPM
版本获得可重现的依赖树。