【问题标题】:bower custom build - choose specific filesbower 自定义构建 - 选择特定文件
【发布时间】:2014-04-21 06:08:39
【问题描述】:

我不断遇到这个问题,我需要/想要将来自 bower 包的特定文件包含到我的应用程序中,但找不到简单的方法来做到这一点。这不仅限于缩小版本。

示例:Moment.js 带有大约四个不同的文件,可以选择包含在内。它们是 moment.js、moment.min.js、moment-with-langs.js、moment-with-langs.min.js。包内的 bower.json 和隐藏的 .bower.json 文件指定了在构建过程中应将哪个文件包含在“主”数组中(这里是 sass-bootstrap bower 包的示例):

"main": ["./dist/js/bootstrap.js", "./dist/css/bootstrap.css", "./dist/fonts/*"]

但应用程序 bower.json 文件中没有这样的东西来指定依赖项。只能指定依赖关系。

对此案进行了一些讨论:我在 bower 的 github 上找到了两个主题,即 https://github.com/bower/bower/issues/368https://github.com/bower/bower/issues/369 以及这里的 How to configure Grunt to replace Bower dependencies by its minified versions,但问题不仅限于缩小版本.

所有主题都以相同的方式结束,说明 bower 作为包管理器,不应处理应用所需的自定义构建过程。但这给开发人员留下了不得不处理大多数 repos 或自己缩小包的问题。有很多人在这两个方面都持不同意见。

我解决 moment.js 问题的方法是我创建了一个 vendor 文件夹并手动添加了我需要的文件,然后添加了一个 Grunt 任务来自动完成。但是,如果有一种标准的方式为用户提供包含例如的选项,那就容易多了。所有推荐的(默认)文件、缩小版本或仅允许从应用的 bower.json 依赖项列表中选择特定文件。

也许我没有正确使用它,或者它不是一个流行的问题。我不知道是否应该在 bower 中添加一些功能,但也许其他开发人员有处理此案例的经验?

【问题讨论】:

  • 我们有与 grunt 相同的设置。一旦你完成了配置设置,它就完全免提了。即使您只能获得常规或 .min 文件,有些人会想要连接,而有些人想在之后将它们放在不同的目录中。我认为 Bower 最好只是拉下 repo 并让开发人员决定如何处理它。我们不会将 .js 文件或节点模块放在源代码管理中。只有配置文件,然后在构建过程中将它们拉下来。
  • 好吧,这并没有真正做到这一点。我希望大多数软件包都使用浏览器默认设置,使用 bower-install grunt 任务。然后我想要一些包使用特定的文件。现在,我可以:1)有两个副本(一个通过 bower-install,第二个来自我的自定义配置)或 2)在每次更新和部署我的应用程序的每台机器上编辑 bower.json 文件。
  • 您可以使用 bower.json 文件中的 ignore 属性稍微修剪一下脂肪。添加“.json”、“.gzip”、“.map”、“.css”、“*.md”以及任何其他您可能不想要的文件。
  • 这个问题你解决了吗?对您的解决方案感兴趣,因为我有类似的问题。我的 bower 组件之一有一个糟糕的 css 文件,默认情况下它包含在它的 bower.json 中,我想将它作为依赖项排除,而无需修改 bower_components 文件夹(因为它是 .gitignored)。

标签: javascript css build customization bower


【解决方案1】:

如果您使用browserify,它的debowerify 转换只是从main 数组中获取第一个 文件。要包含特定的额外文件,请使用适当的路径调用 require 函数。

【讨论】:

  • 这是另一种选择。我想继续使用 bower,而不必对所有事情都使用 npm(因为 bower 对浏览器来说效率更高)。
  • 坦率地说,我不明白你的问题。您必须使用一些额外的工具编译从bower 获取的所有文件。 browserify 是选项之一。还有很多其他工具。正如您提到的,bower 不应该处理自定义构建过程,这是一个有效的论点。
  • 我认为 browserify 是专门用于 npm 模块的。我使用 grunt 来构建模块,但是如果不应该使用 bower 来构建,那么我不明白为什么包的 bower.json 文件指定在构建过程中要包含哪些文件:)
  • 不,bower 不是构建工具。它只是有助于为您的项目获取依赖项。 bower.json 中的 main 属性指定“包的主要端点”。我建议您阅读有关 grunt 和 bower 的更多信息,它们的职责非常不同。
猜你喜欢
  • 2017-09-25
  • 2015-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-12
  • 1970-01-01
  • 2014-09-29
  • 2014-03-11
相关资源
最近更新 更多