【问题标题】:Do we need to push node_modules on bitbucket我们是否需要在 bitbucket 上推送 node_modules
【发布时间】:2016-10-22 06:16:37
【问题描述】:

在 bitbucket 上推送 angular2 应用时,我们是否还需要同时推送 node_modules 和 typings 文件夹?我必须在 azure 上部署该应用程序。据我从各种文章中了解到,当我们在 Azure 上部署时,它会自行运行 npm install ,因此会创建 node_modules 和 typings 文件夹。请分享这个。

【问题讨论】:

  • 不,我认为您不需要推送 node_modules。

标签: node.js azure angular typescript bitbucket


【解决方案1】:

根据Azure's documentation

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

他们还对此问题进行了扩展:

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

在代码管理方面,there are conflicting positions node_modules 文件夹是否应该提交给版本控制。我能说的是,在left-pad incident之后,越来越多的人朝着“应该提交”的方向发展,包括我自己。

如果你想走这条路,我建议你看看shrinkwrap,它会锁定你的依赖项本身所依赖的包的版本,shrinkpack,它将实际的包保存为.tar to避免嘈杂的提交更改。

【讨论】:

【解决方案2】:

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

例如。 npm install bootstrap --save

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      为了避免依赖关系的问题 - 使用像 shrinkwrap 之类的模块(锁定包依赖的版本)

      【讨论】:

        猜你喜欢
        • 2016-02-13
        • 1970-01-01
        • 2016-06-14
        • 1970-01-01
        • 2013-03-27
        • 1970-01-01
        • 1970-01-01
        • 2019-01-22
        • 1970-01-01
        相关资源
        最近更新 更多