Tools/gulp

gulp(1) setting, pug -> html

비비빅B 2020. 4. 14. 17:45

폴더 구조

> npm init
  • node_module과 package.json 생성

node_module
.gitignore
package.json
src
    img
    js
    partials
    scss
    templates
    index.pug

> npm i gulp-cli -g
  • console 창에서 gulp실행 할 수 있음

> npm i gulp -D
  • 개발환경으로 gulp 설치

> touch gulpfile.js
  • gulp config파일 생성

> npm i @babel/{preset-env,core,register} -D
> touch .babelrc
{
	"presets": ["@babel/preset-env"]
}
  • babel 패키지 설치 후 버전 설정

> mv gulpfile.js gulpfile.babel.js
  • gulpfile 파일명 변경

  • gulpfile js문법을 안정된 버전으로 변환시켜줌

> npm i gulp-pug -D
  • pug => html

// gulpfile.babel.js

import gulp from "gulp";
import gpug from "gulp-pug";

const routes = {
	pug: {
		src: "src/*.pug",	// index.pug에서 다른 파일 include하기 때문에 index파일만 컴파일
		dest: "build",
	},
};

const pug = () => gulp.src(routes.pug.src).pipe(gpug()).pipe(gulp.dest(routes.pug.dest));

export const dev = gulp.series([pug]);
  • routes 오브젝트에 경로 저장

  • 변수 pug에 pug=>html 함수 저장

  • 변수 dev로 task series export

> npm i del
> npm i gulp-webserver -D
import gulp from "gulp";
import gpug from "gulp-pug";
import del from "del";
import gws from "gulp-webserver";

const routes = {
	pug: {
		src: "src/*.pug",
		dest: "build",
		watch: "src/**/*.pug",
	},
};

// FUNCTIONS
const clean = () => del(["build/"]);

const pug = () => gulp.src(routes.pug.src).pipe(gpug()).pipe(gulp.dest(routes.pug.dest));

const webServer = () => {
	gulp.src("build").pipe(gws({ livereload: true, open: true }));
};

const watch = () => gulp.watch(routes.pug.watch, pug);

// TASKS
const prepare = gulp.series([clean]);

const assets = gulp.series([pug]);

const render = gulp.parallel([webServer, watch]);

// EXPORT
export const dev = gulp.series([prepare, assets, render]);
  • routes, functions, tasks, export 로 구분

  • 수정사항을 바로 볼 수 있도록 gulp.watch 사용

  • 동기 task는 parrarel 비동기 task는 series 함수 사용

  • del은 dest폴더에 이전에 번들된 파일을 삭제하기 위해 사용

  • 이런식으로 task들을 추가

'Tools > gulp' 카테고리의 다른 글

gulp 컴파일시 JS async, await 오류  (0) 2020.05.03
gulp(3) js, git deploy  (0) 2020.04.15
gulp(2) image, sass -> css  (0) 2020.04.15