Bootstrap4 gulp 配置详解


Posted in Javascript onJanuary 06, 2019

最近想写个项目,由于之前一直写后端,很少接触前端,所以这次来好好学一下前端。看了下Yii框架,它自带了Bootstrap框架,最开始想的是怎么快速写个页面,哪知道这个就像剥洋葱一样,就剥到了学习构建工具的阶段。

说个很沮丧的消息,等我把gulp这套工具调通了后,发现Github上居然有很多这样的模板了!废了我3天时间来搞这个东西。给个关键词:bootstrap 4 gulp boilerplate。额,以及还有一个网站,这是我读完bootstrap的文档后发现的:https://vanillajstoolkit.com/plugins/

在项目目录下的babelln/gulpfile.babel.js:

// 如果要编译babel可以启用
// const babel = require('gulp-babel');
// const concat = require('gulp-concat');
// const uglify = require('gulp-uglify');
const del = require("del");
const gulp = require("gulp");
const browserSync = require("browser-sync");
const sassCompile = require("gulp-sass");
const server = browserSync.create();

const paths = {
 scripts: {
  src: "src/scripts/*.js",
  dest: "dist/scripts"
 },
 css: {
  src: "src/scss/*.scss",
  dest: "dist/css"
 }
};

// 定义清理方法,会删除dist目录
const clean = () => del(["dist"]);

// 定义需要拷贝到dist目录的文件,一般APP最终使用的JS和CSS文件在这个目录中
const scriptFiles = [
 paths.scripts.src,
 "node_modules/bootstrap/dist/js/bootstrap.min.js",
 "node_modules/jquery/dist/jquery.min.js",
 "node_modules/popper.js/dist/umd/popper.min.js"
];

// 编译babel文件的时候使用
// function scripts() {
//  return gulp.src(paths.scripts.src, { sourcemaps: true })
//   .pipe(babel())
//   .pipe(uglify())
//   .pipe(concat('index.min.js'))
//   .pipe(gulp.dest(paths.scripts.dest));
// }

// 将源代码文件复制到目的地,中间可以加入其他处理程序
function scripts() {
 return gulp.src(scriptFiles).pipe(gulp.dest(paths.scripts.dest));
}

// 重启web服务
function reload(done) {
 server.reload();
 done();
}

// 编译sass文件,在dist/css目录产生结果文件
function sass() {
 return gulp
  .src(["node_modules/bootstrap/scss/bootstrap.scss", paths.css.src])
  .pipe(sassCompile())
  .pipe(gulp.dest(paths.css.dest));
}

// 服务初始化,以当前目录babelln/作为网站根目录
function serve(done) {
 server.init({
  server: {
   baseDir: "./"
  }
 });
 done();
}

// 定义需要监控的文件
const watches = [paths.scripts.src, "*.html", paths.css.src];

// 定义watch函数,它监控watches定义的文件,然后顺序执行这些方法
const watch = () => gulp.watch(watches, gulp.series(scripts, sass, reload));

// 再包装一层,整个流程就是清理,编译脚本,编译sass,初始化web服务,启动监控
const dev = gulp.series(clean, scripts, sass, serve, watch);

// 暴露默认方法给外部程序
exports.default = dev;

这个就是根据gulp官方的模板来捏的,最终还算是可以工作。

最后放个效果图^^

编译界面:

Bootstrap4 gulp 配置详解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
完整显示当前日期和时间的JS代码
Sep 17 Javascript
动态样式类封装JS代码
Sep 02 Javascript
下拉列表选择项的选中在不同浏览器中的兼容性问题探讨
Sep 18 Javascript
JS简单实现登陆验证附效果图
Nov 19 Javascript
Javascript实现鼠标框选操作  不是点击选取
Apr 14 Javascript
手机端实现Bootstrap简单图片轮播效果
Oct 13 Javascript
JS实现的几个常用算法
Nov 12 Javascript
BootStrap 实现各种样式的进度条效果
Dec 07 Javascript
Angularjs实现上传图片预览功能
Sep 01 Javascript
微信小程序实现人脸检测功能
May 25 Javascript
vue集成chart.js的实现方法
Aug 20 Javascript
node.js实现简单的压缩/解压缩功能示例
Nov 05 Javascript
jQuery实现获取当前鼠标位置并输出功能示例
Jan 05 #jQuery
node.js连接mysql与基本用法示例
Jan 05 #Javascript
Node.js Buffer模块功能及常用方法实例分析
Jan 05 #Javascript
Node.js net模块功能及事件监听用法分析
Jan 05 #Javascript
JS无限级导航菜单实现方法
Jan 05 #Javascript
JSON字符串操作移除空串更改key/value的介绍
Jan 05 #Javascript
JavaScript常见事件对象与操作实例总结
Jan 05 #Javascript
You might like
php隐藏实际地址的文件下载方法
2015/04/18 PHP
thinkphp跨库操作的简单代码实例
2016/09/22 PHP
一个判断email合法性的函数[非正则]
2008/12/09 Javascript
jquery 全局AJAX事件使用代码
2010/11/05 Javascript
完美解决IE低版本不支持call与apply的问题
2013/12/05 Javascript
再谈Jquery Ajax方法传递到action(补充)
2014/05/12 Javascript
深入分析jquery解析json数据
2014/12/09 Javascript
JSON+Jquery省市区三级联动
2016/01/13 Javascript
全面了解构造函数继承关键apply call
2016/07/26 Javascript
利用JQuery阻止事件冒泡
2016/12/01 Javascript
javascript监听页面刷新和页面关闭事件方法详解
2017/01/09 Javascript
AngularJS表格添加序号的方法
2017/03/03 Javascript
Bootstrap table使用方法记录
2017/08/23 Javascript
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
2018/07/13 Javascript
利用vue.js把静态json绑定bootstrap的table方法
2018/08/28 Javascript
详解单页面路由工程使用微信分享及二次分享解决方案
2019/02/22 Javascript
vue中实现点击变成全屏的多种方法
2020/09/27 Javascript
[43:35]TI4 循环赛第二日Liquid vs Fnatic
2014/07/11 DOTA
linux下安装easy_install的方法
2013/02/10 Python
Python切片知识解析
2016/03/06 Python
django限制匿名用户访问及重定向的方法实例
2018/02/07 Python
Django 配置多站点多域名的实现步骤
2019/05/17 Python
利用pyshp包给shapefile文件添加字段的实例
2019/12/06 Python
python实现连连看游戏
2020/02/14 Python
python实现ftp文件传输系统(案例分析)
2020/03/20 Python
详解Python3 定义一个跨越多行的字符串的多种方法
2020/09/06 Python
使用Python实现音频双通道分离
2020/12/25 Python
分享CSS3制作卡片式图片的方法
2016/07/08 HTML / CSS
宝拉珍选澳大利亚官方购物网站:Paula’s Choice澳大利亚
2016/09/13 全球购物
FitFlop澳大利亚官网:英国符合人体工学的鞋类品牌
2017/06/05 全球购物
super()与this()的区别
2016/01/17 面试题
争论的故事教学反思
2014/02/06 职场文书
投标诚信承诺书
2014/05/26 职场文书
公益广告标语
2014/06/19 职场文书
胡雪岩故居导游词
2015/02/06 职场文书
解决jupyter notebook启动后没有token的坑
2021/04/24 Python