構造
gulpfile.js
package.json
public/
├ css/
│ └ style.css
│
└ index.html
sass/
├ base/
│ ├ _all.scss
│ └ _reset.scss
│
└ style.scss
インストール〜準備
$ cd /path/to/your/project
# package.json 生成
$ npm init
# 必要なパッケージをインストール
$ npm install --save-dev gulp gulp-autoprefixer gulp-load-plugins gulp-plumber gulp-sass gulp-sourcemaps node-sass
package.json
- "scripts" { ... } の記述は init 時には書いてないので追加しておく。
- これにより npm run gulp で node_modules/.bin/gulp を起動できる。
{
"name": "sample",
"version": "1.0.0",
"devDependencies": {
"gulp": "^4.0.2",
"gulp-autoprefixer": "^6.1.0",
"gulp-load-plugins": "^1.5.0",
"gulp-plumber": "^1.2.1",
"gulp-sass": "^4.0.2",
"gulp-sourcemaps": "^2.6.5",
"node-sass": "^4.12.0"
},
"scripts": {
"gulp": "gulp"
}
}
gulpfile.js
- /sass の中身を /public/css/style.css に書き出す。
const gulp = require('gulp')
const gulpLoadPlugins = require('gulp-load-plugins');
const $ = gulpLoadPlugins();
function build(callback) {
gulp.src('sass/style.scss')
.pipe($.plumber())
.pipe($.sourcemaps.init())
.pipe($.sass({
// [outputStyle] Type: String Default: nested Values: nested, expanded, compact, compressed
outputStyle : 'compressed',
}).on('error', $.sass.logError))
.pipe($.autoprefixer({
browsers: ['last 1 versions']
}))
.pipe($.sourcemaps.write())
.pipe(gulp.dest('./public/css'))
callback()
}
function watch(callback) {
gulp.watch('sass/**/*.scss', build)
}
gulp.task(watch)
gulp.task('default', (callback) => {
build(() => {
callback()
})
})
/sass/style.scss
@import "base/all";
/sass/base/_all.scss
@import "reset";
/sass/base/_reset.scss
html, body {
position: relative;
width: 100%;
height: 100%;
}
body {
color: #444;
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: sans-serif;
}
a {
color: #f44;
text-decoration: none;
}
a:hover, a:active {
text-decoration: underline;
}
gulp でビルド
$ cd /path/to/your/project
$ npm run gulp