我习惯于根据Composer(PHP的NPM-cousing)部署代码,Composer运行.json
和.lock
文件。第一个描述了软件包和您的版本限制,第二个列出了安装的确切内容。总是有一个锁定文件,如果运行composer install
,你肯定会收到相同的包集;运行composer update
将重新读取json文件,安装新版本,并更新锁文件。
这对于生产部署来说非常棒,因为你不需要检查你对版本控制系统的依赖关系,而且你在生产中肯定会有与开发中完全相同的依赖关系。
我的问题是:如何最好地自动化NPM相关代码的部署?有可能实现类似于Composer的方法吗?我注意到npm install
只安装package.json
文件中第一个可用的内容。在第一次运行后,即如果您更改版本约束,则必须手动npm update
该包,这将使自动化部署变得毫无用处,因为无法签入版本控制"将此处的包更新为新版本"。。。
npm shrinkwrap是composer.lock文件的一个类似文件。它将生成一个npm-shrinkwrap.json,其中包含所有版本的dep,因此您可以使用它来部署到生产环境中。此外,您还可以尝试npm中的各种libs来锁定版本或搜索其更新,而无需更改packages.json.