bower 是一个常用的包管理工具,用起来和npm很相似,但是两者又有一些区别,可以参考 —— What is the difference between Bower and npm。这里不说bower本身,而想说一下bower的overrides配置。
何谓override
override 本身是覆盖的意思,实际上,它的作用也是用来覆盖依赖包原有的配置。如果是手动引入 bower 依赖包的文件的话,这个配置没什么用,但是当你使用如wiredep这种自动注入工具时,overrides就很有用了。
比如我们用bower安装了 ace-builds 包:
bower install ace-builds --save
然后使用wiredep自动注入bower依赖:
$ node
> require('wiredep')({ src: 'index.html' });
(具体命令参见wiredep文档)
你会发现 ace-builds 相关文件一个也没有注入到 index.html 中,这是为什么呢?
打开 ace-builds 的依赖包的 bower.json 文件 :
你会发现里面并没有配置main
选项,而 wiredep 的自动注入其实就是根据每个依赖包中的main
选项来决定注入哪些文件的。没有main
,wiredep自然没法自动注入了。
这时 overrides 选项就派上用场了,我们可以这么定义:
"overrides": {"ace-builds": {"main": ["src-min-noconflict/ace.js","src-min-noconflict/mode-yaml.js","src-min-noconflict/mode-javascript.js","src-min-noconflict/theme-github.js","src-min-noconflict/ext-language_tools.js"]}}
指出我们需要自动注入的文件。