@羯瑞 整理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