为了更好地复用样式,以及出于练习gulp、scss和学习mocha的目的,我在尝试使用gulp、scss构建一个用于pc端的样式库,使用mocha进行浏览器端的测试。为了方便起见,脚本没有使用纯javascript编写,而是选择了jquery。目前,基本的框架已经搭好,正在完善样式中。javascript
lib --> 源代码库css
scss --> scss代码库前端
样式库使用前缀+主体+表现
的形式命名,好比.c-btn-color--primary
。前端的部分使用单横杆链接,状态使用双横杆形式。命名有些丑陋,这是参考命名空间和BEM后的一种尝试。
前缀主要区分各自的做用,它们包括:java
其它对于项目的详情,请点击这里jquery
因为第一次使用gulp,不可避免地遇到了一些问题,记录以下:git
gulp的中文文档是gulp3的,安装gulp3的方法使用,会发现gulp没有找到任务的状况。在gulp4,建立一个任务应该是:github
function task() { // 须要返回stream、promise或者其余类型(详见gulp4文档) return gulp.src(...).pipe(...); } // 导出default任务 exports.default = task;
在多个任务的状况,能够使用series
和parallel
,来分别指定顺序执行和并行,并且能够相互嵌套。下面是一个例子:gulp
// 假设各个task已经定义。 exports.default = series( task1, parallel(task2, task3) );
这样,导出的default任务就是先执行task1,而后task2和task3同时执行。promise
我在项目中使用了gulp-concat
用于拼接js文件,这时,遇到的问题是怎么肯定文件的顺序,有的文件有顺序要求。这是一个例子:浏览器
function task() { return gulp.src("js/*.js") .pipe(order([ "js/component.js", "!js/index.js", "js/index.js" ], {base: "./"})) .pipe(concat("main.js")) .pipe(dest("dist")); }
上面的任务表示先合并component.js而后合并不是index.js的文件,最后合并index.js,至于base用于设置基本路径,不使用base能够会发现文件没有合并。
因为本人能力有限,若有错误,欢迎指出;若是有什么建议,请不吝赐教。