在bitbucket上推动angular2 app时,我们还需要同时推送node_modules和typings文件夹吗?我必须在天蓝色上dep app应用程序。据我从各种文章中了解到,当我们在Azure上部署时,它运行 npm install 本身,因此创建了node_modules和typings文件夹。请分享一下。
答案 0 :(得分:2)
您不必将node_modules
文件夹与项目一起推送。如果您在package.json
中的依赖项中声明了它,那么无论谁克隆您的项目并运行npm install
,都会下载正确的内容。声明package.json
的简单方法是在安装时使用--save
。
实施例。 npm install bootstrap --save
答案 1 :(得分:2)
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_modules
和typings
文件夹不需要推送。 npm install
会将您的依赖项安装到这些文件夹中。
答案 3 :(得分:0)
最佳实践 - 不要将node_modules推送到git存储库。
为了避免依赖性问题 - 使用像 shrinkwrap 这样的模块(它会锁定软件包依赖项的版本)