我们是否需要在bitbucket上推送node_modules

时间:2016-10-21 18:39:54

标签: node.js azure angular typescript bitbucket

在bitbucket上推动angular2 app时,我们还需要同时推送node_modules和typings文件夹吗?我必须在天蓝色上dep app应用程序。据我从各种文章中了解到,当我们在Azure上部署时,它运行 npm install 本身,因此创建了node_modules和typings文件夹。请分享一下。

4 个答案:

答案 0 :(得分:2)

您不必将node_modules文件夹与项目一起推送。如果您在package.json中的依赖项中声明了它,那么无论谁克隆您的项目并运行npm install,都会下载正确的内容。声明package.json的简单方法是在安装时使用--save

实施例。 npm install bootstrap --save

答案 1 :(得分:2)

Azure's documentation

  

Azure云服务希望在开发环境中安装所有模块,并将node_modules目录作为部署包的一部分包含在内。可以在Cloud Services上使用package.json或npm-shrinkwrap.json文件启用对安装模块的支持,但这需要自定义Cloud Service项目使用的默认脚本。有关如何完成此操作的示例,请参阅Azure Startup task to run npm install to avoid deploying node modules

他们也在这个问题上进行了扩展:

  

当将node_modules目录部署为应用程序的一部分时,与使用package.json或npm-shrinkwrap.json文件相比,它将增加部署的大小;但是,它确实保证了生产中使用的模块版本与开发中使用的模块版本相同。

在代码管理方面,there are conflicting positions是否应将.tar文件夹提交给版本控制。我可以说的是,left-pad incident越来越多的人一直朝着“应该承诺”的方向发展,包括我自己。

如果您想要遵循这条道路,我建议您查看shrinkwrap,它们锁定您的依赖项本身所依赖的软件包的版本,shrinkpack将实际的软件包保存为NULL以避免嘈杂的提交更改。

答案 2 :(得分:1)

不,node_modulestypings文件夹不需要推送。 npm install会将您的依赖项安装到这些文件夹中。

答案 3 :(得分:0)

最佳实践 - 不要将node_modules推送到git存储库。

为了避免依赖性问题 - 使用像 shrinkwrap 这样的模块(它会锁定软件包依赖项的版本)