如果你足够细心你会发现这里有一些“与众不同的”标记,<!--build:js--><!-- endbuild --> 和 <!--build:css--><!-- endbuild -->
实际上这不是注释,他们其实是 usemin 的专用配置标记。其中 <!-- bower:js--><!--endbower--> 是另一个插件 bowerInstall 的
配置标记,我会在下文再详细讲解。
这个标记其实很简单将他翻译过来就是:<!-- build:类型[js|css] 生成的目标文件>, 源文件目录就是当前html所在的目录,如果要指定多个
源目录可以通过<!-- build:类型({目录1,目录2}) 生成的目标文件>的方式指定。
按照这个来理解的话,这里的设置就会输出三个文件:
vendor.js //第三方依赖的合成压缩脚本
index.js //项目内的的合成压缩脚本
vendor.css //第三方依赖的合成压缩样式表
main.css //项目内的合成压缩样式表
好吧,先来说说 vendor.*,如果装了 bowerInstall 这个插件在<!-- bower:类型 --><!-- endbower-->内的引用是由 bowerInstall 自动加入的,他加入后会修改index.html源文件,我们不需要手工加入。而对于某些比较坑爹的第三包,这里指的坑爹是他的最终输出文件放在一些古怪的深层目录中,而不是在他的发布目录的根下,那么我们才需要手工加入引用。如 ace-builds 这个包,他的发布文件是在 ace-builds/src/ace.js,同时他又提供了ace-build/src-min/ace.js 文件,对于这类包我们就不得不手工将具体的引用文件加入到 <!-- bower--> 标记内,否则bowerInstall是不知道应该引用哪一个文件的。
而输出位置就是前面我们在 usemin选项中设定的:
useminPrepare { options: { dest: '<%= config.dist %>' } }也就是 项目目录/dist 。
接下来是 main.css 和 index.js ,这两个是从不同的源来生成的,main.css 没有指定源,所以他会在当前的index.html所在位置中找 styles 目录也就是 项目目录/app/styles,那么具体需要引用那些自定的css(之前通过 less生成的)就在此设定。
解释得更为清楚一点就是 假设有一个 app/styles/custom.less 文件,那么在 index.html内加入这个引用应该是:
<!-- build:css styles/main.css --> <link rel="stylesheet" href="styles/main.css"> <link rel="stylesheet" href="styles/custom.css"> <!-- endbuild -->虽然custom.css在设计期并不存在,但他会被less编译器最终输出,所以引用时只要名字对了就行了。
同样的 build:js 的设置也是这理,只是这里增加了 .tmp 作源搜寻目录,就是说在 .tmp 找不到的源文件 可以到 app/scripts下找,反之亦然。