Web開発環境を準備する
必要なツール
- Node.js
- Gulp
Gulpがやってくれること
GulpはSassやJSの圧縮などの作業を行ってくれる「タスクランナー」と呼ばれるツールのことです。 タスクランナーにはGulpの他に、GruntやBroccoliなどがあります。
Gulpがやってくれる作業は以下のようなものです。
package.json
package.jsonというファイルにはnodeでインストールできるモジュールが入っています。
{ "name": "src", "version": "1.0.0", "description": "", "main": "gulpfile.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "devDependencies": { "browser-sync": "^2.11.1", "gulp": "^3.9.0", "gulp-autoprefixer": "^3.1.0", "gulp-changed": "^1.3.0", "gulp-concat": "^2.6.0", "gulp-csso": "^1.0.1", "gulp-imagemin": "^2.4.0", "gulp-load-plugins": "^1.2.0", "gulp-rename": "^1.2.2", "gulp-sass": "^2.1.1", "gulp-sourcemaps": "^1.6.0", "gulp-uglify": "^1.5.1", "gulp-watch": "^4.3.9" } }
gulpfile.js
Gulpの動作はgulpfile.jsに定義されています。
基本となるgulpfile.jsは以下のようなものです。
var gulp = require('gulp'); var $ = require('gulp-load-plugins')(); var browserSync = require('browser-sync'); var paths = { "htmlSrc" : "./*.html", "scssSrc" : "./src/scss/**/*.scss", "jsSrc" : "./src/js/*.js", "jsLib" : "./src/js/lib/*.js", "imgSrc" : "./src/images/**", "rootDir" : "./dist/", "imgDir" : "./dist/images/", "jsDir" : "./dist/js/" } gulp.task('bs', function() { browserSync.init({ server: { baseDir: "./" }, notify : true, xip : false }); }); gulp.task('scss', function() { return gulp.src(paths.scssSrc) .pipe($.sourcemaps.init()) .pipe($.sass()).on('error', $.sass.logError) .pipe($.autoprefixer({ browsers: ['last 2 versions'] })) .pipe($.sourcemaps.write()) .pipe(gulp.dest(paths.rootDir + 'css')) .pipe($.rename({ suffix: '.min' })) .pipe($.csso()) .pipe(gulp.dest(paths.rootDir + 'css')) .pipe(browserSync.reload({ stream: true, once : true })); }); gulp.task('bs-reload', function() { browserSync.reload(); }); gulp.task('image', function() { return gulp.src(paths.imgSrc) .pipe($.changed(paths.imgDir)) .pipe($.imagemin({ optimizationLevel: 3 })) .pipe(gulp.dest(paths.imgDir)); }); gulp.task('js', function() { return gulp.src([paths.jsLib, paths.jsSrc]) .pipe($.uglify({preserveComments: 'license'})) .pipe($.concat('main.min.js', {newLine: '\n'}) ) .pipe(gulp.dest(paths.jsDir)); }); gulp.task('default', ['image', 'js', 'bs', 'scss', 'bs-reload'], function() { $.watch([paths.htmlSrc],function(e) { gulp.start("bs-reload") }); $.watch([paths.scssSrc],function(e) { gulp.start("scss") }); $.watch([paths.imgSrc],function(e) { gulp.start("image") }); $.watch([paths.jsSrc],function(e) { gulp.start("js") }); });
このgulpfile.jsがあるディレクトリで、gulp
を実行すると、gulpfile.jsの内容が実行されます。