搭建了适合自己的前端自动流水线(gulp+browserSync+sass)
作者:admin 日期:2016-06-26很多前端小菜鸟们,还不知道啥是自动工作流。说白了,就是搭建一套自动机制,让前端码农变成无脑的流水线工人,摆脱琐碎的人工劳动。从此,你在开发环境做的东西,会自动的传送到生产环境。
典型场景如下:
我每天开始工作时,只要打开工作目录,在黑色的命令窗内运行"gulp",然后我开始写html及sass代码。
1、当我按ctrl+s存盘时,sass会自动的编译成css,并拷贝到要发布的文件夹内。--gulp-sass
2、我在html文件中使用了include命令,把一些公共部分include进来,而这种语法,HTML本身是不支持的,只能依靠工具。--gulp-file-include
3、我每次存盘,chrome及手机中的页面都会自动刷新,时时看效果。不象之前,每存次盘,还要F5一下。--browserSync
4、目前我还没有使用代码压缩、混淆、合并等机制,如果需要,一分钟可以加进来。
5、甚至还可以自动上传、SVN、压缩备份等,自动得有点过了,暂时不敢用。
其实半年前我就知道了gulp+sass的功能,只是没有大用。当时项目中的妹子,来自原云厨前端团队,使用这样一套工作流:
1、sass编译,使用ruby环境+compass+sass的搭配;
2、px2rem使用sass公式实现;
3、本地虚拟站点,使用另一个node小程序,具体我不记得了。
我觉得搭建一套流,用了几套不同的东西,管理起来挺麻烦的,没怎么用。这几天,静下心来,终于用 gulp 统一了大局,从此故事主人公过上了幸福快乐的生活。
放一下我的gulpfile.js文件供参考:
Javascript代码
- var gulp = require('gulp'),
- concat = require('gulp-concat'),
- uglify = require('gulp-uglify'),
- browserSync = require('browser-sync').create(),
- fileinclude = require('gulp-file-include'),
- minifyCss = require('gulp-minify-css'),
- sass = require('gulp-sass');
- gulp.task('sass', function() {
- return gulp.src('src/sass/**/*.scss')
- .pipe(sass().on('error', sass.logError))
- .pipe(gulp.dest('public/css'));
- });
- gulp.task('sassw', function() {
- gulp.watch('src/sass/**/*.scss', ['sass']);
- });
- gulp.task('inc', function() {
- gulp.src(['./src/index.html'])
- .pipe(fileinclude({
- prefix: '@@',
- basepath: '@file'
- }))
- .pipe(gulp.dest('./public'));
- });
- // 将所有css文件连接为一个文件并压缩,存到public/css
- gulp.task('concatCss', function() {
- gulp.src(['src/css/*.css'])
- // .pipe(concat('main.css'))
- // .pipe(minifyCss())
- .pipe(gulp.dest('public/css'));
- });
- // 将所有js文件连接为一个文件并压缩,存到public/js
- gulp.task('concatJs', function() {
- gulp.src(['src/js/*.js'])
- // .pipe(concat('main.js'))
- // .pipe(uglify())
- .pipe(gulp.dest('public/js'));
- });
- // 需要时运行一下就行了。
- gulp.task('copy', function() {
- console.log('拷贝!');
- gulp.src(['src/**'])
- .pipe(gulp.dest('public'));
- });
- // 默认任务
- gulp.task('default', ['watch']);
- // 监听任务
- gulp.task('watch', function() {
- // 建立浏览器自动刷新服务器
- browserSync.init({
- server: {
- baseDir: "public",
- index: "html/love.html" //自动跳转到此页
- }
- });
- // gulp.watch('src/css/*.css', ['concatCss']); //处理Css
- gulp.watch('src/sass/**/*.scss', ['sass']);
- // gulp.watch('src/js/*.js', ['concatJs']);
- // gulp.watch('src/**/*.html', ['inc']); //处理包含文件
- // 自动刷新
- gulp.watch('public/**', function() {
- browserSync.reload();
- });
- });
评论: 0 | 引用: 0 | 查看次数: 9022
发表评论