-
gulpProject using node.js/Cloning Catch-Mind 2020. 12. 14. 09:57
설치
npm install gulp gulp-sass node-sass gulp-autoprefixer gulp-csso del gulp-browserify babelify
gulp
gulp를 실행시킬 수 있다. package.json에서 "scripts"에 "dev:assets" : "gulp"를 설정함으로써 gulp를 실행시킬 수 있다.
gulp-sass
Sass plugin for gulp
node-sass
node.js에서 sass를 사용할 수 있게 하는 모듈이다.
gulp-autoprefixer
Prefix CSS with Autoprefixer
gulp-csso
Minify CSS with CSSO. CSS 파일의 공백을 없앰으로써 파일 크기를 줄인다.
del
Delete files and directories using globs. gulp를 실행하면서 파일을 transcompiling 하기 전에 기존에 있던 static 파일을 삭제하기 위해서 설치했다.
gulp-browserify
js module bundler다.
babelify
babel browserify transform이다.
설정
package.json에서 "scripts"를 다음과 같이 바꿔준다.
- dev:server => execute the server and ignore assets/ & static/ when save the files.
- dev:assets => execute the gulp which changes modern JS & SASS to normal JS & CSS
package.json
gulpfile.babel.js
gulp는 시작(src)과 끝(dest) 사이에 pipe를 통해서 method를 추가할 수 있다.
import gulp from 'gulp'; import sass from 'gulp-sass'; import autoprefixer from 'gulp-autoprefixer'; import csso from 'gulp-csso'; import del from 'del'; import browserify from 'gulp-browserify'; import babelify from 'babelify'; sass.compiler = require('node-sass'); const paths = { styles: { src: 'assets/scss/styles.scss', dest: 'static/styles', watch: 'assets/scss/**/*.scss', }, js: { src: 'assets/js/main.js', dest: 'static/styles', watch: 'assets/js/**/*.js', }, }; const clean = () => del('static'); const styles = () => gulp .src(paths.styles.src) .pipe(sass()) .pipe( autoprefixer({ cascade: false, }) ) .pipe(csso()) .pipe(gulp.dest(paths.styles.dest)); const js = () => gulp .src(paths.js.src) .pipe( browserify({ transform: [ babelify.configure({ presets: ['@babel/preset-env'], }), ], }) ) .pipe(gulp.dest(paths.js.dest)); const watchFiles = () => { gulp.watch(paths.styles.watch, styles); gulp.watch(paths.js.watch, js); }; const dev = gulp.series([clean, styles, js, watchFiles]); export default dev;
app.js
webpack으로 transcompiling을 끝내면 static 파일에 js/main.js와 styles/styles.css가 생긴다. pug가 이들을 사용하기 위해서 다음과 같이 express.static으로 경로를 설정해줘야 한다.
package.json
main.pug
main.pug
참고 자료
소스 코드
github.com/zpskek/guessMind-v3/commit/8ad674b606ee3f3cde07c53ddc87969599f0fdc1
'Project using node.js > Cloning Catch-Mind' 카테고리의 다른 글
socket.io로 로그인 알리기 (0) 2020.12.14 Client가 서버의 변수 공유하기 (0) 2020.12.14 Logout (0) 2020.12.14 login on Catch Mind (0) 2020.12.13 Sign up - Controller (0) 2020.12.13