@羯瑞 整理javascript
前端工具如今层出不穷,网上搜下一大片,就看你怎么去使用了,基于项目看用什么样的构建工具。有的工具提供的功能仍是很是强大的。css
有兴趣的能够去了解下,上面的我也是只知其一;不知其二的。前端
构建工具大多都是居于nodejs下的。java
提及gulp,就不得说下grunt。相信 不少小伙伴都会在网上看到它俩在一块儿的。下面是摘抄网上的对比:node
先来讲下npm工具,npm是随同NodeJS一块儿安装的包管理工具,装了node会默认装上npm工具。### 前言
前端工具如今层出不穷,网上搜下一大片,就看你怎么去使用了,基于项目看用什么样的构建工具。有的工具提供的功能仍是很是强大的。webpack
npm install --global gulp
npm install --save-dev gulp
// 载入插件 var gulp = require('gulp'), browserSync = require('browser-sync').create(),//浏览器刷新工具 imagemin = require('gulp-imagemin'),//图片压缩 tinypng = require('gulp-tinypng-nokey');//tinypng图片压缩 minifycss = require('gulp-minify-css'),//css压缩 uglify = require('gulp-uglify'),//js压缩 jshint = require('gulp-jshint'),//js语法检测 rename = require('gulp-rename'),//重命名 gclean = require('gulp-clean'),//清除文件 cache = require('gulp-cache'),//获取文件cache minimist = require('minimist');//截取传参 /** * 默认参数:vurl(模版路径),wurl(静态资源路径),ourl(输出路径) * imagemin: 图片压缩,已经舍弃。压缩效果不怎么好,支持所有图片格式 * clean: 清除输出文件夹,防止输出的东西重叠,或者能够自定义不一样文件夹的名称 * server: 实时刷新测试,自定义域名,自定义监听模版文件和静态资源 * picmin: 图片压缩基于tinypng,压缩率高,质量好。仅支持png,jpg。api请求因此会慢点 * cssmin: css文件压缩 * jsmin: js文件压缩 * allmin: cssmin+jsmin+picmin * * 优化内容:都自定义传递参数路径,符合咱们一个系统多个站点的痛点;优化内存占用;引入缓存机制 * gulp imagemin --wurl ffsm/baobaoqm * gulp clean --ourl aa_gulp_out * gulp server --host dev.d1xz.net --vurl ffsm/view/qf --wurl ffsm/qf/diandeng * gulp picmin --wurl ffsm/baobaoqm [--ourl aa_gulp_out] * gulp cssmin --wurl ffsm/baobaoqm [--ourl aa_gulp_out] * gulp jsmin --wurl ffsm/baobaoqm [--ourl aa_gulp_out] * gulp allmin --wurl ffsm/baobaoqm [--ourl aa_gulp_out] */ var viewUrl='d1xz/shuipf/application/'; var wwwUrl='d1xz/www/statics/'; // 获取配置参数 var options = minimist(process.argv.slice(2)); //IMG压缩 支持GIF、PNG、JPG压缩率不高 gulp.task('imagemin',['clean'],function(){ if(options.wurl){ var thisUrl = wwwUrl+''+options.wurl; var outUrl = options.ourl?options.ourl:thisUrl; console.log('压缩地址路径:'+thisUrl); console.log('输出地址路径:'+outUrl); gulp.src([wwwUrl+''+options.url+'/*.{gif,png,jpg,jpeg}',wwwUrl+''+options.url+'/**/*.{gif,png,jpg,jpeg}']) .pipe(imagemin()) .pipe(gulp.dest(outUrl)); }else{ console.log('配置参数错误;例:gulp imagemin --wurl ffsm/baobaoqm'); } }); // 清除输出文件 gulp.task('clean', function() { if(options.ourl){ return gulp.src(options.ourl, {read: false}).pipe(gclean()); }else{ console.log('配置参数错误;例:gulp clean --ourl aa_gulp_out'); } }); //HTML实时预览 gulp.task('server', function() { console.log('为减小系统cpu、内存占用,请写全路径;'); if(options.host){ browserSync.init({ proxy:options.host,//动态域名 notify: false,//刷新是否提示 open: true,//是否自动打开页面 timestamps: true }); //监听文件变化数组 var vurl=viewUrl+''+options.vurl; var wurl=wwwUrl+''+options.wurl; console.log('监听模版文件路径:'+vurl); console.log('监听静态文件路径:'+wurl); gulp.watch([vurl+'/*.*',vurl+'/**/*.*',wurl+'/*.*',wurl+'/**/*.*']).on("change", browserSync.reload); }else{ console.log('配置参数错误;例:gulp server --host dev.d1xz.net --vurl ffsm/view/qf --wurl ffsm/qf/diandeng'); } }); // 图片压缩tinypng,api请求速度会慢点;只能压缩PNG和JPG gulp.task('picmin', function () { if(options.wurl){ var thisUrl = wwwUrl+''+options.wurl; var outUrl = options.ourl?options.ourl:thisUrl; console.log('压缩地址路径:'+thisUrl); console.log('输出地址路径:'+outUrl); gulp.src([thisUrl+'/*.{png,jpg,jpeg}',thisUrl+'/**/*.{png,jpg,jpeg}','!'+thisUrl+'/layer/**/*.{png,jpg,jpeg}']) .pipe(cache(tinypng())) .pipe(gulp.dest(outUrl)); }else{ console.log('配置参数错误;例:gulp picmin --wurl ffsm/baobaoqm'); } }); // css压缩 gulp.task('cssmin', function() { if(options.wurl){ var thisUrl=wwwUrl+''+options.wurl; var outUrl = options.ourl?options.ourl:thisUrl; console.log('压缩地址路径:'+thisUrl); console.log('输出地址路径:'+outUrl); gulp.src([thisUrl+'/*.css',thisUrl+'/**/*.css','!'+thisUrl+'/**/*.min.css','!'+thisUrl+'/**/layer/**/*.css','!'+thisUrl+'/**/layui/**/*.css','!'+thisUrl+'/**/layer_mobile/**/*.css','!'+thisUrl+'/**/layer_mobile/**/*.css',,'!'+thisUrl+'/**/swiper/**/*.css','!'+thisUrl+'/**/swiper/**/*.css','!'+thisUrl+'/**/libs/**/*.css','!'+thisUrl+'/**/libs/*.css']) .pipe(minifycss()) //执行压缩 .pipe(rename({suffix: '.min'})) //重命名 .pipe(gulp.dest(outUrl)); //输出文件夹 }else{ console.log('配置参数错误;例:gulp cssmin --wurl ffsm/baobaoqm'); } }); // js压缩 gulp.task('jsmin', function() { if(options.wurl){ var thisUrl=wwwUrl+''+options.wurl; var outUrl = options.ourl?options.ourl:thisUrl; console.log('压缩地址路径:'+thisUrl); console.log('输出地址路径:'+outUrl); gulp.src([thisUrl+'/**/*.js',thisUrl+'/*.js','!'+thisUrl+'/**/*.min.js','!'+thisUrl+'/**/layer/**/*.js','!'+thisUrl+'/**/layui/**/*.js','!'+thisUrl+'/**/require/**/*.js','!'+thisUrl+'/**/require/*.js','!'+thisUrl+'/**/layer_mobile/**/*.js','!'+thisUrl+'/**/layer_mobile/**/*.js','!'+thisUrl+'/**/swiper/**/*.js','!'+thisUrl+'/**/swiper/**/*.js','!'+thisUrl+'/**/libs/**/*.js','!'+thisUrl+'/**/libs/*.js']) .pipe(jshint()) .pipe(uglify()) //执行压缩 .pipe(rename({suffix: '.min'})) //重命名 .pipe(gulp.dest(outUrl)); //输出文件夹 }else{ console.log('配置参数错误;例:gulp jsmin --wurl ffsm/baobaoqm'); } }); // 所有压缩 gulp.task('allmin', function(){ gulp.start('cssmin', 'jsmin', 'picmin'); });
npm install
可使用淘宝镜像具体用法移步:>淘宝npm镜像git
//临时安装 npm --registry https://registry.npm.taobao.org install express //持久安装(替换npm的源地址) npm config set registry https://registry.npm.taobao.org //安装cnpm(推荐) npm install -g cnpm --registry=https://registry.npm.taobao.org