0.0.1 • Published 7 years ago

h5-templete v0.0.1

Weekly downloads
1
License
ISC
Repository
-
Last release
7 years ago

使用gulp快速开发前端项目

项目需配置 node.js + npm 环境

使用gulp自动实现

  • 图片压缩
  • css代码自动添加浏览器厂商前缀,代码压缩
  • js代码检测、压缩
  • 代码热更新
  • 创建本地小型服务器,可以方便的在手机上调试

1. 项目文件目录

app/---------------------------- 项目源文件
	    css/
	    images/
	    js/
	    index.html
dist/----------------------------  经过gulp处理后的文件
gulpfile.js----------------------  gulp配置文件
package.json---------------------  开发依赖文件

2. 安装开发依赖

cnpm install

3.配置gulp文件

3.1 引入文件,参考common.js规范

var gulp = require('gulp');
var del = require('del');
var browserSync = require('browser-sync').create();  // 静态服务器
var reload = browserSync.reload;
var watch = require('gulp-watch');
var gulpScss = require('gulp-sass');   // 编译sass文件
var imagemin = require('gulp-imagemin');
var $ = require('gulp-load-plugins')();

3.2 配置gulp任务

3.2.1 图片压缩,压缩等级为3级,总共0-7级,参考imagemin配置

gulp.task('image', function() {
    return gulp.src('app/images/**/*')------------------------------文件入口
        .pipe($.cache(imagemin({ optimizationLevel: 3, progressive: true, interlaced: true })))
        .pipe(gulp.dest('dist/images'));----------------------------文件出口,即压缩后的文件的存放路径
});

3.2.2 css压缩,自动添加前缀

gulp.task('css', function () {
   gulp.src('app/css/**/*')
       .pipe($.autoprefixer())
       .pipe($.minifyCss())
       .pipe(gulp.dest('dist/css'));
});

3.2.3 js压缩,检测

gulp.task('js', function () {-----------------------------压缩
    gulp.src(['app/js/**/*.js'])
        .pipe($.jshint.reporter('default'))
        .pipe($.uglify())
        .pipe(gulp.dest('dist/js'))
});
gulp.task('lint', function () {---------------------------检测
    gulp.src('gulpfile.js')
        .pipe($.jshint())
        .pipe($.jshint.reporter('default'));
});

3.2.4 复制html

gulp.task('html', function () {
   gulp.src('app/**/*.html')
       .pipe(gulp.dest('dist/'))
});

3.2.5 自动刷新

gulp.task('serve', function () {
    browserSync.init({
        server:{baseDir:'./app'},
        browser:'chrome'
    });
});

3.2.6 watch监控

gulp.task('watch', function () {
    gulp.watch(['app/**/*'],reload);
});

3.2.7 css,js重命名

gulp.task('rename', function () {
   gulp.src(['!dist/**/*min.js','!dist/**/*min.css','dist/**/*.css','dist/**/*.js'])
       .pipe($.rename({suffix:'.min'}))
       .pipe(gulp.dest('dist/'));
});

3.2.8 scss编译,监控

// 编译scss文件
gulp.task('scss-compile', function () {
    gulp.src('app/css/**/*.scss')
        .pipe(gulpScss().on('error',gulpScss.logError))
        .pipe(gulp.dest('app/css'));
});
// 监控scss文件变化
gulp.task('scss-watch', function () {
    gulp.watch('app/**/*.scss',['scss-compile']);
});

clean

gulp.task('clean', function (cb) {
   del(['dist/**/*'],cb);
});

4. 配置默认任务

gulp.task('default',['image','js','scss-compile','css','serve','watch']);

如何使用?

gulp -------------------------启动默认任务default

单独启动某一个任务

gulp image---------------------压缩图片
gulp js------------------------压缩js文件

用gulp开发的一个小案例

ansicolorsarchyarr-diffargparsearr-flattenarray-differarray-find-indexarray-unionarray-uniqarray-uniqueasync-each-seriesarrifybalanced-matchbeeperbin-buildbin-checkbin-versionbin-version-checkbin-wrapperblbluebirdbrace-expansionbracesbuffer-crc32buffer-to-vinylbuffer-shimsbuiltin-modulescache-swapcamelcasecamelcase-keyscapture-stack-tracecardinalcawchalkclapcli-tablecli-usagecloneclone-statscocoacolorscommanderconcat-mapconcat-streamconsole-streamconvert-source-mapcore-util-iscross-spawn-asynccssocurrently-unhandleddateformatdecamelizecreate-error-classdecompressdecompress-tardecompress-tarbz2decompress-targzdecompress-unzipdeep-extenddefaultsdeprecateddetect-filedownloadduplexifyduplexer2end-of-streameach-asyncerror-exescape-string-regexpexec-bufferexec-seriesexecaexecutableesprimaexpand-bracketsexpand-rangeexpand-tildeextendextend-shallowextglobfancy-logfd-slicerfiguresfile-typefilename-regexfilename-reserved-regexfilenamifyfill-rangefind-indexarchive-typefind-upfind-versionsfindup-syncfinedfirst-chunk-streamflagged-respawnfor-infs-exists-syncfs.realpathfor-owngazeget-proxyget-stdinglobgifsicleglob-baseglob-parentglob-streamglob-watcherglob2baseglobal-modulesglobal-prefixglobbyglobuleglogggotgraceful-fsgraceful-readlinkgrowlygulp-cachegulp-decompressgulpgulp-imagemingulp-notifygulp-renamegulp-utilgulp-sourcemapsgulploghas-gulploghosted-git-infohtml-comment-regeximageminimagemin-gifsicleimagemin-jpegtranimagemin-svgoimagemin-optipnginflightindent-stringinheritsip-regexinterpretirregular-pluralsis-absoluteisis-arrayishis-bzip2is-builtin-moduleiniis-equal-shallowis-dotfileis-extendableis-extglobis-finiteis-bufferis-globis-gzipis-natural-numberis-numberis-jpgis-pngis-objis-plain-objis-posix-bracketis-primitiveis-redirectis-gifis-relativeis-retry-allowedis-streamis-taris-urlis-unc-pathis-utf8is-valid-globis-windowsis-zipisarrayjpegtran-binisexejson-stable-stringifyjs-yamljsonifykind-oflazy-reqis-svglazystreamisobjectload-json-fileliftofflodash._arraycopylodashlodash._arrayeachlodash._baseassignlodash._baseclonelodash._basecopylodash._bindcallbacklodash._baseforlodash._basevalueslodash._basetostringlodash._isiterateecalllodash._getnativelodash._reevaluatelodash.assignlodash._reescapelodash._rootlodash._reinterpolatelodash.assignwithlodash.clonedeeplodash.escapelodash.isargumentslodash.isequallodash.isstringlodash.isplainobjectlodash.picklodash.mapvalueslodash.keyslodash.restparamlodash.templatelodash.templatesettingslongestlogalotlpadloud-rejectionlowercase-keyslpad-alignlru-cachemap-cachemarkedmap-objmarked-terminalmeowmicromatchmerge-streamminimatchlodash.isemptynativesmultipipenode-emojinode-notifiernode-status-codesnormalize-package-datanode.extendnormalize-pathnpm-run-pathnumber-is-nanobject.omitobject-assignobject.pickoncemkdirponetimeorchestratoroptipng-binordered-read-streamsos-filter-objos-homedirosenvos-tmpdirparse-globparse-filepathpath-existsparse-jsonpath-rootpath-is-absolutepath-keypath-root-regexpath-typependpifyplurminimistpinkiepinkie-promisepreservepretty-hrtimepretty-bytesprocess-nextick-argspseudomapqprepend-httprcrandomaticread-all-streamread-pkgread-pkg-uprechoirreadable-streamredeyedrepeat-elementregex-cacherepeat-stringrepeatingreplace-extresolve-dirresolvepromise.pipeseek-bzipsemversemver-regexset-immediate-shimsemver-truncateshellwordssignal-exitsigmundsparklessource-mapspdx-correctspdx-expression-parsesprintf-jsspdx-license-idssqueakstream-combiner2stat-modestream-shiftstream-consumestring.prototype.codepointatstring_decoderstrip-bomstrip-bom-streamstrip-dirsstrip-eofstrip-indentstrip-json-commentsstrip-outertar-streamsum-upsvgothrough2tempfilethrough2-concurrenttimed-outthrough2-filtertildifytime-stamptrim-newlinestrim-repeatedto-absolute-globrimraftry-json-parsetunnel-agentunc-path-regextypedarrayunzip-responseurl-parse-laxunique-streamurl-regexutil-deprecatev8flagsuuidvali-datevinyl-assignvinylvalidate-npm-package-licensevinyl-fswarewhet.extendwhichwrap-fnxtendwrappyyauzlyallistredentsax
0.0.1

7 years ago