a-ling

导航

Gulp学习笔记

  1. 安装node.js:node.js官网
  2. 选装cnpm:
    1. 官方网址:http://npm.taobao.org
    2. 安装:命令提示符执行npm install cnpm -g --registry=https://registry.npm.taobao.org;  注意:安装完后最好查看其版本号cnpm -v或关闭命令提示符重新打开,安装完直接使用有可能会出现错误
  3. 全局安装gulp:
    1. 安装:命令提示符执行cnpm install gulp -g
    2. 查看是否正确安装:命令提示符执行gulp -v,出现版本号即为正确安装
  4. 新建package.json文件
    1. 说明:package.json是基于nodejs项目必不可少的配置文件,它是存放在项目根目录的普通json文件;
    2. 它是这样一个json文件(注意:json文件内是不能写注释的,复制下列内容请删除注释):
      1.  1 {
         2   "name": "test",   //项目名称(必须)
         3   "version": "1.0.0",   //项目版本(必须)
         4   "description": "This is for study gulp project !",   //项目描述(必须)
         5   "homepage": "",   //项目主页
         6   "repository": {    //项目资源库
         7     "type": "git",
         8     "url": "https://git.oschina.net/xxxx"
         9   },
        10   "author": {    //项目作者信息
        11     "name": "surging",
        12     "email": "surging2@qq.com"
        13   },
        14   "license": "ISC",    //项目许可协议
        15   "devDependencies": {    //项目依赖的插件
        16     "gulp": "^3.8.11",
        17     "gulp-less": "^3.0.0"
        18   }
        19 }
    3. 当然我们可以手动新建这个配置文件,但是作为一名有志青年,我们应该使用更为效率的方法:命令提示符执行cnpm init
    4. 查看package.json帮助文档,命令提示符执行cnpm help package.json
    5. 特别注意:package.json是一个普通json文件,所以不能添加任何注释。参看 http://www.zhihu.com/question/23004511
  5. 本地安装gulp插件
    1. 安装:定位目录命令后提示符执行cnpm install --save-dev
    2. 本示例以gulp-less为例(编译less文件),命令提示符执行cnpm install gulp-less --save-dev
    3. 将会安装在node_modules的gulp-less目录下,该目录下有一个gulp-less的使用帮助文档README.md

    4. 为了能正常使用,我们还得本地安装gulp:cnpm install gulp --save-dev

    5. PS:细心的你可能会发现,我们全局安装了gulp,项目也安装了gulp,全局安装gulp是为了执行gulp任务,本地安装gulp则是为了调用gulp插件的功能
  6. 新建gulpfile.js文件(重要)
    1. 说明:gulpfile.js是gulp项目的配置文件,是位于项目根目录的普通js文件(其实将gulpfile.js放入其他文件夹下亦可)
    2. 它大概是这样一个js文件(更多插件配置请查看这里):
        1 const  gulp=require('gulp');    //引用gulp
        2 const  del=require('del');      //引用gulp删除插件
        3 const  uglify=require('gulp-uglify');  //引用压缩Js插件
        4 const  css=require('gulp-clean-css');  //gulp压缩css文件
        5 const  rename = require("gulp-rename");  //引用重命名插件
        6  
        7 gulp.task('hello',function () {     //定义一个hello任务
        8     console.log('hello')
        9 });
       10  
       11 //task():定义任务
       12 //src():源文件
       13 // pipe():管道流,接通源头文件与目标文件的输出
       14 // dest():输出文件的目的地
       15 // watch():监视文件
       16 //事例:
       17 // 1、复制单个文件
       18 gulp.task('copyHtml',function () {
       19     return gulp.src('./src/public/login.html').pipe(gulp.dest("dist/public"))
       20 });
       21  
       22 // 2、复制多个文件
       23 gulp.task('copyAllHtml',function () {
       24     return gulp.src("./src/public/*.html").pipe(gulp.dest('dist/public'));
       25 });
       26  
       27 // 3、复制指定文件
       28 // [指定的文件已,指定的文件2]
       29 gulp.task('copy2Js',function () {
       30     return gulp.src(["./src/public/js/ajax.js",'dist/public/js/classPage.js'])
       31     .pipe(gulp.dest("dist/public/js"))
       32 });
       33  
       34 // 4、某个文件
       35 // !排队的文件
       36 gulp.task("copyNoJs",function () {
       37     return gulp.src(['./src/public/js/*.js','!./src/public/js/Classroom.js'])
       38         .pipe(gulp.dest('dist/public/js'))
       39 });
       40  
       41 // 5、复制多个后缀名的图片
       42 // {选项一,选项二}
       43 gulp.task("copyImage",function () {
       44     return gulp.src('./src/public/img/*.{png,jpg,bmp,jpeg,gif}')
       45         .pipe(gulp.dest('dist/public/img'))
       46 });
       47  
       48 // 6、执行多个任务
       49 // gulp.task('任务名称',[任务依赖的模块],回调函数)
       50 // 依赖任务之间没有顺序之分,异步执行
       51 // 依赖任务之间完成后,在执行当前的回调函数
       52 gulp.task('build',['copyAllHtml','copyNoJs','copyImage'],function () {
       53     console.log('编译成功')
       54 });
       55  
       56 // 7、Watch:监视文件的变化
       57 gulp.task('myWatch',function () {
       58     gulp.watch('./src/public/login.html',['build'])
       59 });
       60  
       61 // 8、删除文件
       62 gulp.task("del",function () {
       63     // del('./dist/public/img/*.{jpg,png,jepg,gif}')
       64     // *:所有文件
       65     // **:所有文件夹
       66     del(['./dist/public/js/*']);
       67     del(['./dist/**/*']);
       68 });
       69  
       70 gulp.task('default',function () {
       71     gulp.start('serve')
       72  
       73 });
       74  
       75 // 9、压缩js文件
       76 gulp.task('ysjs',function(){
       77     return gulp.src('./src/public/js/*.js')
       78     .pipe(uglify())
       79     .pipe(gulp.dest('./src/public/js'));
       80  
       81  
       82 });
       83  
       84 //10、 添加监听
       85 gulp.task('watch_js',function(){
       86     return gulp.watch('./src/public/js/*.js',['ysjs'])
       87  
       88 });
       89  
       90 //11、压缩css文件
       91 gulp.task('css',function () {
       92     return gulp.src('./src/public/sass/*.css')
       93         .pipe(css())
       94         .pipe(gulp.dest('./src/public/sass'))
       95 });
       96 //添加监听
       97 gulp.task('jtCss',function () {
       98     return gulp.watch('./src/public/sass/*.css',['css'])
       99 });
      100 //12、重命名css文件
      101 gulp.task('reName',function () {
      102     return gulp.src('./src/public/sass/*.css')
      103         .pipe(rename({suffix: '.css'}))
      104         .pipe(css())
      105         .pipe(gulp.dest('./src/public/sass'))
      106 }); 
  7. 运行gulp
    1. 说明:命令提示符执行gulp 任务名称
    2. 编译less:命令提示符执行gulp testLess
    3. 当执行gulp default或gulp将会调用default任务里的所有任务[‘testLess’,’elseTask’]
  8. 使用webstorm运行gulp任务
    1. 说明:使用webstorm可视化运行gulp任务
    2. 使用方法:将项目导入webstorm,右键gulpfile.js 选择”Show Gulp Tasks”打开Gulp窗口,若出现”No task found”,选择右键”Reload tasks”,双击运行即可
  9. 使用vscode运行gulp任务

posted on 2018-10-15 10:50  a-ling  阅读(287)  评论(0编辑  收藏  举报