【发布时间】: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/368 和 https://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