surfaces

入门环境搭建

 

 

 

webpack  入门环境搭建

 

gulp  入门环境搭建

 

我的 gulp 配置文件

//A 加载插件:
// 1 引入 gulp及组件
var gulp = require(\'gulp\'),   //* /这个是必须安装的,没有它,其它组件都用不了(注意watch组件直接集成在gulp中了,无需额外安装watch组件)
  
    minifycss = require(\'gulp-clean-css\'),      //压缩css   ulp-minify-css 已被废弃 
    uglify = require(\'gulp-uglify\'),            //压缩JS  *
    imagemin = require(\'gulp-imagemin\'),       //压缩图片  *
     htmlmin = require(\'gulp-htmlmin\'),  //gulp-htmlmin本身就有对页面上js、css的压缩支持,配置参数即可,无需再使用其他插件
    requirejsOptimize = require(\'gulp-requirejs-optimize\'),   //require 打包文件
   
 
   // jshint = require(\'gulp-jshint\'),            //js代码校验
    rename = require(\'gulp-rename\'),             
    concat = require(\'gulp-concat\'), //合并js文件
    notify = require(\'gulp-notify\'),  //更改提醒
    cache = require(\'gulp-cache\'),   //缓存当前任务中的文件,只让已修改的文件通过管道  *
    livereload = require(\'gulp-livereload\'), //自动刷新页面   当代码变化时,它可以帮我们自动刷新页面 插件最好配合谷歌浏览器来使用,且要安装livereload chrome extension扩展插件,不能下载的请自行FQ。
    del = require(\'del\'); 
    
  var rjs = require(\'requirejs\');   //https://github.com/phated/requirejs-example-gulpfile/blob/master/gulpfile.js
 
 
 //npm update -g minimatch@3.0.2
//npm install gulp-autoprefixer gulp-clean-css gulp-jshint gulp-concat gulp-uglify gulp-imagemin gulp-notify gulp-rename gulp-livereload gulp-cache del --save-dev
   
 //B 建立任务: 
 //gulp.task(name[, deps], fn) 定义任务  name:任务名称 deps:依赖任务名称 fn:回调函数
//gulp.src(globs[, options]) 执行任务处理的文件  globs:处理的文件路径(字符串或者字符串数组) 
//gulp.dest(path[, options]) 处理完后文件生成路径
 
 
 //0 管理html
gulp.task(\'html\', function () {
    var options = {
        removeComments: true,  //清除HTML注释
        collapseWhitespace: true,  //压缩HTML
        collapseBooleanAttributes: true,  //省略布尔属性的值 <input checked="true"/> ==> <input checked />
        removeEmptyAttributes: true,  //删除所有空格作属性值 <input id="" /> ==> <input />
        removeScriptTypeAttributes: true,  //删除<script>的type="text/javascript"
        removeStyleLinkTypeAttributes: true,  //删除<style>和<link>的type="text/css"
        minifyJS: true,  //压缩页面JS
        minifyCSS: true  //压缩页面CSS
    };
    gulp.src(\'src/*.html\')
        .pipe(htmlmin(options))
        .pipe(gulp.dest(\'dist/\'))
        .pipe(notify({ message: \'html task complete\' }));
});
 
// 1管理样式 Styles
gulp.task(\'pagestyles\', function() {
return gulp.src(\'src/css/pages/*.css\')  //需要压缩的css 
       // .pipe(rename({ suffix: \'.min\' }))  //重命名
        .pipe(minifycss())  //压缩
        .pipe(gulp.dest(\'dist/css/pages\'))  //压缩到新的目录
        .pipe(notify({ message: \'pages styles  task complete\' }));  //通知
});

gulp.task(\'commonstyles\', function() {
return gulp.src(\'src/css/common/*.css\')  //需要压缩的css 
        //.pipe(rename({ suffix: \'.min\' }))  //重命名
        .pipe(minifycss())  //压缩
        .pipe(gulp.dest(\'dist/css/common\'))  //压缩到新的目录
        .pipe(notify({ message: \'common styles  task complete\' }));  //通知
});





//2 管理脚本  script

gulp.task(\'pagesjs\', function() {
  return gulp.src(\'src/js/pages/*.js\')
   // .pipe(jshint())  // js代码检查
   // .pipe(jshint.reporter()) // 输出检查结果
    //.pipe(concat(\'all.js\'))
    //.pipe(rename({ suffix: \'.min\' }))
    .pipe(uglify())
    .pipe(gulp.dest(\'dist/js/pages/\'))
    .pipe(notify({ message: \'pagesjs task complete\' }));
});

gulp.task(\'commonjs\', function() {
  return gulp.src(\'src/js/common/*.js\')
  //  .pipe(jshint(\'.jshintrc\'))
    //.pipe(jshint.reporter(\'default\'))
    //.pipe(concat(\'all.js\'))
   // .pipe(rename({ suffix: \'.min\' }))
    .pipe(uglify())
    .pipe(gulp.dest(\'dist/js/common/\'))
    .pipe(notify({ message: \'commonjs task complete\' }));
});



//3 管理图片  Images

gulp.task(\'imagesview\', function() {
  return gulp.src(\'src/images/view/*.{png,jpg,gif,ico}\')
    .pipe(cache(imagemin({ optimizationLevel: 3, progressive: true, interlaced: true })))
     // 取值范围:0-7(优化等级),是否无损压缩jpg图片,是否隔行扫描gif进行渲染,是否多次优化svg直到完全优化
    .pipe(gulp.dest(\'dist/images/view/\'))
    .pipe(notify({ message: \'Images1 task complete\' }));
});
gulp.task(\'imagespic\', function() {
  return gulp.src(\'src/images/pic/*\')
    .pipe(cache(imagemin({ optimizationLevel: 3, progressive: true, interlaced: true })))
    .pipe(gulp.dest(\'dist/images/pic/\'))
    .pipe(notify({ message: \'Images2 task complete\' }));
});



// Clean  任务执行前,先清除之前生成的文件
gulp.task(\'clean\', function(cb) {
   del([\'dist/css/*\', \'dist/js/*\'], cb);
});



 //C 监听文件:
 // Watch

gulp.task(\'watch\', function(event) {  // 使用Ctrl+c退出任务
      //console.log(event.changed); //变化类型 added为新增,deleted为删除,changed为改变 
    
    //Watch *html files
    gulp.watch(\'src/*.html\', [\'html\']); //* ok
    
  // Watch .css files
   gulp.watch(\'src/css/common/*.css\', [\'commonstyles\']);
   gulp.watch(\'src/css/pages/*.css\', [\'pagestyles\']); //* ok
   
  // Watch .js files
  //gulp.watch(\'src/js/*/*.js\', [\'pagesjs,commonjs\']);  //这个不可以  暂时不知到为啥
  gulp.watch(\'src/js/pages/*.js\', [\'pagesjs\']);
  gulp.watch(\'src/js/common/*.js\', [\'commonjs\']);
  
  // Watch image files
  //gulp.watch(\'src/images/*/*\', [\'imagesview\',\'imagespic\']);
  gulp.watch(\'src/images/view/*\',[\'imagesview\']);
  gulp.watch(\'src/images/pic/*\', [\'imagesview\']);
  
  // Create LiveReload server
  livereload.listen();
  // Watch any files in dist/, reload on change
  gulp.watch([\'dist/**\']).on(\'change\', livereload.changed);

});
 
 ///D 设定默认任务    每个gulpfile.js里都应当有一个dafault任务,它是缺省任务入口(类似C语言的main()
 gulp.task(\'default\', function () {  
       //gulp.run(\'sass\',\'minjs\',\'mincss\');   //gulp.run(tasks)表示运行对应的任务,这里表示执行名为\'sass\',\'minjs\',\'mincss\'的三个任务
    gulp.run(\'watch\');    //执行\'watch\'监听任务
 })
 

 

关于前端跨域调试

在进行接口请求时,我们的页面通常是在sublime的本地服务器或者vscode本地服务器预览,所以请求接口会遇到跨域的问题。
在项目构建的时候通常我们源代码会放在src文件夹下,然后使用gulp进行代码的压缩、合并、图片的优化(根据需要)等等,我们会使用gulp。这里解决跨域的问题可以用gulp-connect结合http-proxy-middleware,此时我们在gulp-connect中的本地服务器进行预览调试。
gulpfile.js如下: 开发过程使用gulp server命令,监听文件改动并使用livereload刷新;使用gulp命令进行打包。

var gulp = require(\'gulp\');
var concat = require(\'gulp-concat\');
var uglify = require(\'gulp-uglify\');
var autoprefixer = require(\'gulp-autoprefixer\');
var useref = require(\'gulp-useref\');
var connect = require(\'gulp-connect\');
var proxyMiddleware = require(\'http-proxy-middleware\');
// 定义环境变量,若为 dev,则代理src目录; 若为prod,则代理dist目录
var env = \'prod\'
// 跨域代理  将localhost:8088/api 映射到 https://api.shujumohe.com/
gulp.task(\'server\', [\'listen\'], function() {
    var middleware = proxyMiddleware([\'/api\'], {
        target: \'https://api.shujumohe.com/\',
        changeOrigin: true,
        pathRewrite: {
            \'^/api\': \'/\'
        }
    });
    connect.server({
        root: env == \'dev\' ? \'./src\' : \'./dist\',
        port: 8088,
        livereload: true,
        middleware: function(connect, opt) {
            return [middleware]
        }
    });
});
gulp.task(\'html\', function() {
    gulp.src(\'src/*.html\')
        .pipe(useref())
        .pipe(gulp.dest(\'dist\'));
});
gulp.task(\'css\', function() {
    gulp.src(\'src/css/main.css\')
        .pipe(concat(\'main.css\'))
        .pipe(autoprefixer({
            browsers: [\'last 2 versions\'],
            cascade: false
        }))
        .pipe(gulp.dest(\'dist/css/\'));
    gulp.src(\'src/css/share.css\')
        .pipe(concat(\'share.css\'))
        .pipe(autoprefixer({
            browsers: [\'last 2 versions\'],
            cascade: false
        }))
        .pipe(gulp.dest(\'dist/css/\'));
    gulp.src(\'src/vendors/css/*.css\')
        .pipe(concat(\'vendors.min.css\'))
        .pipe(autoprefixer({
            browsers: [\'last 2 versions\'],
            cascade: false
        }))
        .pipe(gulp.dest(\'dist/vendors/css\'));
    return gulp
});
gulp.task(\'js\', function() {
    return gulp.src(\'src/vendors/js/*.js\')
        .pipe(concat(\'vendors.min.js\'))
        .pipe(uglify())
        .pipe(gulp.dest(\'dist/vendors/js\'));
});
gulp.task(\'img\', function() {
    gulp.src(\'src/imgs/*\')
        .pipe(gulp.dest(\'dist/imgs\'));
});
gulp.task(\'listen\', function() {
    gulp.watch(\'./src/css/*.css\', function() {
        gulp.src([\'./src/css/*.css\'])
            .pipe(connect.reload());
    });
    gulp.watch(\'./src/js/*.js\', function() {
        gulp.src([\'./src/js/*.js\'])
            .pipe(connect.reload());
    });
    gulp.watch(\'./src/*.html\', function() {
        gulp.src([\'./src/*.html\'])
            .pipe(connect.reload());
    });
});
gulp.task(\'default\', [\'html\', \'css\', \'js\', \'img\']);

 

分类:

技术点:

相关文章:

  • 2021-08-08
  • 2021-11-28
  • 2021-05-18
  • 2021-12-01
  • 2021-12-11
  • 2021-12-11
  • 2021-11-28
猜你喜欢
  • 2021-11-28
  • 2022-12-23
  • 2021-11-30
  • 2022-12-23
  • 2021-05-04
  • 2021-06-07
  • 2022-12-23
相关资源
相似解决方案