[걸프(Gulp)] 5. gulp.spritesmith (이미지스프라이트 만들기)
Gulp 사용법 2016. 12. 5. 17:37
이미지 스프라이트 란 웹 사이트 성능 최적화 방법중 하나로 쓰이는 방법 중 하나 입니다.
이것은 여러장의 이미지를 한장의 png 파일로 만들어서 그 이미지를 사용합니다.
왜 이렇게 하냐면
여러개의 이미지를 웹 사이트에서 보여주려고 하면 이미지의 갯수만큼 서버에 이미지를 요청하는 작업이 반복됩니다.
여러번 이미지를 요청하는건 사이트 로딩을 더디게 만들죠. 또한 이미지 파일이 여러장인 것 보다 한장인게 용량이 더 적게 차지합니다.
어떤 이미지를 이미지 스프라이트 기법을 통해 만드느냐면
대표적으로 메뉴 와 아이콘 등이 있습니다.
이런 스프라이트 이미지를 수작업으로 만들 수 있지만 이미지 사이의 간격 등 이런 귀찮고 번거로운 작업을 일일히 손으로 재가면서 하기엔 시간이 너무 많이 걸리는 작업입니다. 따라서 명령어 한번에 이미지 스프라이트를 만들어 보려 합니다.
1. 이미지 스프라이트를 사용하기 위해 다음의 패키지를 설치합니다.
npm install --save-dev gulp.spritesmith
2. 저는 폴더 구성을 다음과 같이 했습니다.
- gulpSetting 바로 하위에 sp_img 폴더를 만들고 스프라이트 이미지를 만들 이미지들을 넣었습니다.
- src 폴더 하위에 img 폴더를 만들었고 이 폴더는 sp_img 폴더에 들어있던 이미지들이 한장의 이미지로 합쳐져서 저장될 폴더 입니다.
3. gulpfile.js 를 수정합니다.
저는 이전에 만들어 놨던 셋팅들이 있어서 그대로 사용하겠습니다.
추가된 라인은 4, 49~59번 라인 입니다.
4번 라인 spritesmith = require('gulp.spritesmith'); 은 gulp.spritesmith 라는 모듈을 가져옵니다.
49~59 번 라인은 안에 있는 동작을 수행해 주는 코드인데요.
51 번 라인은 변수를 써서 작업을 하였습니다. 이유는 도출될 이미지와, css 파일을 알아보기 쉽게 정리하기 위해서 입니다.
53~55번 라인은 순서대로 합쳐진 이미지의 이름, 이미지 사이의 간격, css 가이드 입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | var fileinclude = require('gulp-file-include'), sass = require('gulp-sass'), connect = require('gulp-connect'), spritesmith = require('gulp.spritesmith'); gulp = require('gulp'); // html include gulp.task('fileinclude', function(){ gulp.src(['./app/src/index.html']) .pipe(fileinclude({ prefix:'@@', basepath:'@file' })) .pipe(gulp.dest('./')); }); // Sass gulp.task('sass', function(){ return gulp.src('./app/scssfile/*.scss') .pipe(sass().on('error', sass.logError)) .pipe(gulp.dest('./app/src/css')); }); gulp.task('sass:watch', function(){ gulp.watch('./app/scssfile/*.scss', ['sass']); }); // gulp 서버 gulp.task('connect',function(){ connect.server({ root: './app/src', livereload: true, port: 8001 }) }); gulp.task('html', function(){ gulp.src('./app/src/*.html') .pipe(connect.reload()); }); gulp.task('watch', function(){ gulp.watch(['./app/src/*.html'],['html']) // html reload gulp.watch(['./app/src/scssfile/*.scss'],['sass']) // sass 자동 컴파일 }); gulp.task('default',['connect', 'watch']); // image sprite gulp.task('sprite', function(){ var spriteData = gulp.src('./sp_img/*.png') .pipe(spritesmith({ imgName: 'sp_all.png', padding: 4, cssName: 'sp_all.css' })); spriteData.img.pipe(gulp.dest('./app/src/img')); spriteData.css.pipe(gulp.dest('./app/src/css')); }); | cs |
4. 마지막으로 gulp sprite 를 cmd에 입력해 주면
이미지 스프라이트 가 자동적으로 생성되고
css 가이드가 바로 나옵니다.
gulp image sprite 간단 사용법 : http://coodle.tistory.com/13
image sprite option : https://docs.omniref.com/js/npm/gulp.spritesmith/3.1.0#label-Getting+Started
이미지 스프라이트로 웹 사이트 성능 최적화 : http://nuli.navercorp.com/sharing/blog/post/23818
'Gulp 사용법' 카테고리의 다른 글
[걸프(Gulp)] 4. gulp-webserver (웹서버 띄우기 + 자동 새로고침 2) (3) | 2016.10.19 |
---|---|
[걸프(Gulp)] 4. gulp-connect (웹서버 띄우기 + 자동 새로고침) (0) | 2016.10.19 |
[걸프(Gulp)] 3. gulp-sass (2) | 2016.09.23 |
[걸프(Gulp)] 2. gulp-file-include (2) | 2016.09.20 |
[걸프(Gulp)] 1. 소개 및 설치 (6) | 2016.09.20 |