[걸프(Gulp)] 3. gulp-sass
Gulp 사용법 2016. 9. 23. 19:14
Sass가 무엇인지 그리고 어떻게 사용하는지에 대해서 포스팅을 진행했던 적이 있습니다.
Sass(사스) 소개 및 설치
http://recoveryman.tistory.com/276
Sass(사스) 사용법
http://recoveryman.tistory.com/277
서브라임 텍스트에서 Sass 패키지 설치하기 (코드를 색으로 구분해서 오류를 최소화)
이번엔 Gulp를 사용해서 Sass 컴파일을 진행해 보려 합니다.
근데.. Gulp를 이용해서 Sass 만 컴파일 하는거로 끝나면 Gulp를 사용 할 이유가 없다고 생각 됩니다.
그래서,
맨 처음 Gulp의 설치하면서 진행했던 html include 를 Sass 컴파일 하면서 동시에 돌리려고 합니다.
아니 왜? 라고 묻는다면...
그런 귀찮은 작업을 각각 따로따로 할 이유가 없기 때문입니다. 사스 컴파일 따로 돌리고, html 파일 include 해주고 이 모든 작업을 따로따로 하는것보다 명령어 한번에 한꺼번에 진행되면 얼마나 빠르고 효과적 일까요? 그러기 위해서 사용하는게 바로 Grunt 와 Gulp입니다.
1. 이전에 fileinclude 태스크를 만들때 선행했던 폴더인 gulpSetting 폴더에서 작업을 이어가겠습니다.
아래 사진을 보시면 Sass 모듈을 설치할 때 --save-dev 옵션을 설치하려는 모듈 이름 뒤에 적었습니다.
gulp-file-include 모듈을 설치할땐 --save-dev 옵션이 설치하려는 모듈 이름 앞에 작성했었지요.
하지만 이건 앞에 옵션을 붙이든 뒤에 옵션을 붙이든 상관 없습니다.
2. Sass를 사용하기 위한 폴더를 이렇게 작업했습니다.
저 혼자만 공부하고 사용해 보는지라 실무하시는 분들은 어떻게 진행하는지는 잘 모릅니다.
include 폴더와 같은 위치에 scssfile폴더를 만들고 test.scss 파일을 만들었습니다. (당연히 Sass 문법을 작성후 저장하였습니다.)
그리고 src의 하위 폴더로 css 폴더를 하나 더 만들었습니다. 이 폴더는 컴파일된 css를 이쪽으로 저장시키기 위해서 입니다.
3. 그리고 gulpfile.js 에 다음과 같이 추가로 작성을 하였습니다.
2번 라인과, 15 ~ 20번까지 라인을 새로 추가했습니다.
17번 라인을 보시면 fileinclude 할 때에는 gulp.src 앞에 return이 없는데 이 return이 있건 없건 같은 결과를 표시합니다.
의미상으론 return을 입력하는게 맞는거 같습니다. 다음의 행동을 돌려주기 때문이죠.
18번째 라인은 scss의 css컴파일을 진행하는 부분이라고 생각하시면 될꺼 같습니다. 또 에러가 출력하면 출력해 줍니다.
19번 라인은 컴파일된 css 파일을 해당되는 경로에서 저장 합니다. 그러면...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | var fileinclude = require('gulp-file-include'), sass = require("gulp-sass"), gulp = require('gulp'); // html파일 인클루드 gulp.task('fileinclude', function() { gulp.src(['./app/src/index.html', './app/src/sub/*.html'], {base : './'}) .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')); }); | cs |
4. 그러면 실행시켜 보겠습니다.
gulp sass
이 명령어를 터미널 또는 명령프롬프트 창에 입력시키면 sass 라는 task를 실행시킵니다.
잘 되니깐 너무 신나서 여러번 입력해봤습니다. ㅎㅎ
5. 결과는 역시나 잘 생성되어 있고 코드 또한 잘 컴파일 되어 있었습니다.
6. 그럼 저 Sass 모듈 을 실행하는 명령어를 자꾸 반복시켜서줘 입력해야 하느냐 궁금해 하실 수 있습니다.
물론 가능 합니다. 그리고 그게 안된다면 gulp로 Sass 컴파일을 할 필요가 없어요.
아무튼,
18번째 라인에서 outputStyle : '스타일속성' 을 입력하시면 출력되는 css의 스타일 이 달라집니다.
이건 맨위에 Sass 사용법의 13번에 있습니다.
22번 라인부터는 파일에 변화가 일어나면 그걸 감지해서 자동으로 컴파일 해 줍니다. 22번 라인은 자동으로 컴파일 되는 task 이름이 sass:watch 라고 만들었고 이 안의 내용으로 해당 경로 내의 .scss를 찾아내서 gulp sass 를 실행시킨다는 의미 입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | var fileinclude = require('gulp-file-include'), sass = require("gulp-sass"), gulp = require('gulp'); // html파일 인클루드 gulp.task('fileinclude', function() { gulp.src(['./app/src/index.html', './app/src/sub/*.html'], {base : './'}) .pipe(fileinclude({ prefix: '@@', basepath: '@file' })) .pipe(gulp.dest('./')); }); // Sass gulp.task('sass', function(){ return gulp.src('./app/scssfile/*.scss') .pipe(sass({outputStyle : 'compact'}).on('error', sass.logError)) .pipe(gulp.dest('./app/src/css')); }); gulp.task('sass:watch', function(){ gulp.watch('./app/scssfile/*.scss', ['sass']); }); | cs |
7. 실험해 봤습니다.
scss의 파일이 수정 될 때마다 로그가 올라가는 모습을 확인할 수 있습니다.
이 자동을 빠져나가는 키는 컨트롤 + C 입니다. 물론 test.css 파일은 수정한 scss 파일이 제대로 컴파일 되어있었습니다.
gulpSetting 폴더 압축본을 올리고 싶었는대
10메가 가 넘어가네요. 오메...
그래서 gulpfile.js 만 첨부합니다.
gulpfile.jsgulp-sass : https://www.npmjs.com/package/gulp-sass
'Gulp 사용법' 카테고리의 다른 글
[걸프(Gulp)] 5. gulp.spritesmith (이미지스프라이트 만들기) (4) | 2016.12.05 |
---|---|
[걸프(Gulp)] 4. gulp-webserver (웹서버 띄우기 + 자동 새로고침 2) (3) | 2016.10.19 |
[걸프(Gulp)] 4. gulp-connect (웹서버 띄우기 + 자동 새로고침) (0) | 2016.10.19 |
[걸프(Gulp)] 2. gulp-file-include (2) | 2016.09.20 |
[걸프(Gulp)] 1. 소개 및 설치 (6) | 2016.09.20 |