【问题标题】:Excluding unnecessary files from deployment从部署中排除不必要的文件
【发布时间】:2014-01-26 21:26:49
【问题描述】:

我已经开始学习如何使用 RequireJS 和 Bower 包管理系统。我这样定义bower.json 文件:

  {

    "name": "App",
    "version": "1.0",
    "dependencies": {

        "jquery": null,
        "backbone-amd": null,
        "underscore-amd": null,
        "requirejs": null,
        "handlebars": null,
        "mustache" : null

    }

}

它不仅下载库,还下载backbone-amdunderscore-amdrequirejs 的示例文件和文档。我的项目大小为 52 MB(在使用 r.js 构建后,为 42 MB)。有没有办法排除不必要的文件并减小项目的大小(除了手动删除和删除它)?

【问题讨论】:

  • 不清楚。 1)如果这是一个 git 问题(如当前接受的答案所证明的那样),为什么问题中没有提到 git? 2) 目前提出的问题(关注r.js' 输出的大小)听起来像是传递给浏览器的问题。
  • 抱歉,我认为这是解决方案,问题是当我在本地运行 bower install 时,它会下载所有文件,但也会下载文档和示例。在构建之后,文件也存在并且增加了项目大小。有没有办法只下载库,例如。 requirejs.js 没有示例和文档。我的英语不太好:(

标签: javascript deployment bower


【解决方案1】:

您可以使用Gruntmake 之类的构建工具来避免一遍又一遍地手动进行。这就是我所做的。我的项目通常是这样的结构:

  • lib/ 包含项目自己的代码。

  • build/ 包含构建项目的结果。换句话说,应该安装在服务器上的代码。

然后我有一个使用 Grunt 或 make 的构建设置,它使用 lib/ 中的代码以及通过 Bower、npm 或其他方式下载的供应商包来创建 build/ 下的文件。

构建通常使用以下方法之一来处理供应商包:

  1. 如果包不包含不必要的文件(例如示例和文档),只需将其复制到build/ 中的适当位置即可。

    这种方法更可取。要确定是否可以使用此方法,您必须检查供应商如何打包他们的软件。一些库分布在多个包中。例如,Lodash 通过 npm 提供了 170 个包。因此,对于一个有多个可用包的库,您应该检查是否有一个不包含不必要的信息。如果是这种情况,可以使用这种方法。

  2. 如果包确实包含不必要的文件,那么构建过程需要更加智能并只复制需要的文件。

    迟早,您会遇到这样一种情况,即您想要使用的某些软件与您不想要的文件一起分发。这是保证会发生的。

    在这种情况下,您可以与开发人员进行沟通,并指出如果他们可以打包他们的软件以使其仅包含部署所需的文件,那该有多好。如果他们同意为他们的软件添加一个只包含必要文件的包,那么您可以使用上面的第一种方法。

    否则,您必须了解软件的结构,确定您绝对需要什么,并为您的构建过程(Grunt、make 或其他)编写一个仅复制您需要的文件的函数。

【讨论】:

    【解决方案2】:

    常见的工作流程是将 bower verdor 目录放在 .gitignore 中,然后在服务器上部署代码后再次运行 bower。这就是任何依赖管理库的目的

    【讨论】:

    • 是的,最好的答案,:D
    猜你喜欢
    • 2014-09-09
    • 1970-01-01
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2011-09-15
    • 2011-08-24
    • 1970-01-01
    相关资源
    最近更新 更多