首先本站有一个类似的问题:
http://segmentfault.com/q/1010000000319039
考虑到问题的时间是2013年,有点久远,所以重新发布一个问题,而且关注点也有点区别,下面是正题:
前端目前用webpack解决js的依赖、合并、打包,目前很酸爽,css是用less来写,每个组件对应一个less(如果需要的话),之后通过ExtractTextPlugin
把这些less编译、合并成一个css然后加入到页面中,到目前为止so far so good
但是同时使用了bootstrap作为框架,目前是把bs的资源js css font都通过页面link的方式引入,觉得有些浪费,所以在想又没有css的依赖解决方案?比如首先把bs的less文件引入本地(npm什么的都可以),然后在我需要的组件less里面引入对应的bs less组件,进行minin,完了webpack把用到的less编译、打包,有没有这种可能性?对于bs的js模块是不是也有类似的办法?
邀请了两个标签的大拿,如果打扰了,请见谅:)
你自己在后面设想的方案就是可行的,很多基于 Bootstrap 的自动化构建流程也都是这么做的。唯一需要注意的是 Bootstrap 的组件自身就存在依赖关系,所以不是简单的在你的组件里引入 Bootstrap 的文件就完事了(不管是样式还是脚本,但是脚本的依赖关系相对简单,比如说 Popover 组件一定要先引入 Tooltips 组件),而是要先理清楚 Bootstrap 自身的依赖,然后再统一引入到你的模块中去。
然而这就带来另外一个问题:自己的组件里会不停重复引用 Bootstrap 自身的依赖关系,如果
ExtractTextPlugin
(我没用过)可以在抽取的时候解决 DRY 的问题那就没什么问题了。如果不能的话则可以考虑别的解决方案,前不久新鲜出炉的 CSS Modules 不知道你是否了解?可以试试看。至于 Bootstrap 自身的依赖关系是怎样的,可以下载非 build 版的源码,不管是 less 或是 sass 版本都是按照模块化的思路去组织的,最外层的
bootstrap.less/scss
文件里列举的依赖关系的顺序,但最好不要直接用原始结构里的(比如说你用 npm 安装的,那最好不要直接用node_modules/...
下的文件,而是在自己的项目里拷贝一份,这样你可以在里面做一些自定制,去掉不要的组件或是添加自己扩展的组件之类的。这两年做 web 应用越来越觉得 Bootstrap 有些不合时宜了,方方面面的原因都有,不过用来做些原型还是很好用的。有一定发展水平的团队基本上都会有自己的 UI 样式库,按照自己团队开发产品的构建流程来编写,可能使用起来会更加得心应手些。我们有,你邀请的 @题叶 他们也有,是不是基于 Bootstrap 倒不一定,看需求了。