mirror of
https://github.com/koodiklinikka/koodiklinikka.fi.git
synced 2026-03-18 04:05:09 +00:00
convert gulpfile.coffee to gulpfile.js
This commit is contained in:
125
gulpfile.coffee
125
gulpfile.coffee
@@ -1,125 +0,0 @@
|
|||||||
browserify = require 'browserify'
|
|
||||||
browserSync = require 'browser-sync'
|
|
||||||
duration = require 'gulp-duration'
|
|
||||||
ecstatic = require 'ecstatic'
|
|
||||||
gulp = require 'gulp'
|
|
||||||
gutil = require 'gulp-util'
|
|
||||||
jade = require 'gulp-jade'
|
|
||||||
notify = require 'gulp-notify'
|
|
||||||
path = require 'path'
|
|
||||||
prefix = require 'gulp-autoprefixer'
|
|
||||||
source = require 'vinyl-source-stream'
|
|
||||||
sourcemaps = require 'gulp-sourcemaps'
|
|
||||||
streamify = require 'gulp-streamify'
|
|
||||||
stylus = require 'gulp-stylus'
|
|
||||||
uglify = require 'gulp-uglify'
|
|
||||||
watchify = require 'watchify'
|
|
||||||
|
|
||||||
production = process.env.NODE_ENV is 'production'
|
|
||||||
|
|
||||||
config =
|
|
||||||
scripts:
|
|
||||||
source: './src/coffee/main.coffee'
|
|
||||||
extensions: ['.coffee']
|
|
||||||
destination: './public/js/'
|
|
||||||
filename: 'bundle.js'
|
|
||||||
templates:
|
|
||||||
source: './src/jade/*.jade'
|
|
||||||
watch: './src/jade/*.jade'
|
|
||||||
destination: './public/'
|
|
||||||
styles:
|
|
||||||
source: './src/stylus/style.styl'
|
|
||||||
watch: './src/stylus/*.styl'
|
|
||||||
destination: './public/css/'
|
|
||||||
assets:
|
|
||||||
source: './src/assets/**/*.*'
|
|
||||||
watch: './src/assets/**/*.*'
|
|
||||||
destination: './public/'
|
|
||||||
|
|
||||||
browserifyConfig =
|
|
||||||
entries: [config.scripts.source]
|
|
||||||
extensions: config.scripts.extensions
|
|
||||||
debug: not production
|
|
||||||
cache: {}
|
|
||||||
packageCache: {}
|
|
||||||
|
|
||||||
handleError = (err) ->
|
|
||||||
gutil.log err
|
|
||||||
gutil.beep()
|
|
||||||
|
|
||||||
notify
|
|
||||||
title: 'Compile Error'
|
|
||||||
message: err.message
|
|
||||||
|
|
||||||
this.emit 'end'
|
|
||||||
|
|
||||||
gulp.task 'scripts', ->
|
|
||||||
pipeline = browserify(browserifyConfig)
|
|
||||||
.bundle()
|
|
||||||
.on 'error', handleError
|
|
||||||
.pipe source config.scripts.filename
|
|
||||||
|
|
||||||
pipeline = build.pipe(streamify(uglify())) if production
|
|
||||||
|
|
||||||
pipeline.pipe gulp.dest config.scripts.destination
|
|
||||||
|
|
||||||
gulp.task 'templates', ->
|
|
||||||
pipeline = gulp
|
|
||||||
.src config.templates.source
|
|
||||||
.pipe jade pretty: not production
|
|
||||||
.on 'error', handleError
|
|
||||||
.pipe gulp.dest config.templates.destination
|
|
||||||
|
|
||||||
if production then pipeline else pipeline.pipe browserSync.reload(stream: true)
|
|
||||||
|
|
||||||
gulp.task 'styles', ->
|
|
||||||
pipeline = gulp.src config.styles.source
|
|
||||||
|
|
||||||
pipeline = pipeline.pipe(sourcemaps.init()) unless production
|
|
||||||
|
|
||||||
pipeline = pipeline.pipe stylus
|
|
||||||
'include css': true
|
|
||||||
compress: production
|
|
||||||
.on 'error', handleError
|
|
||||||
.pipe prefix 'last 2 versions', 'Chrome 34', 'Firefox 28', 'iOS 7'
|
|
||||||
|
|
||||||
pipeline = pipeline.pipe(sourcemaps.write '.') unless production
|
|
||||||
pipeline = pipeline.pipe gulp.dest config.styles.destination
|
|
||||||
|
|
||||||
if production then pipeline else pipeline.pipe browserSync.stream match: '**/*.css'
|
|
||||||
|
|
||||||
gulp.task 'assets', ->
|
|
||||||
gulp
|
|
||||||
.src config.assets.source
|
|
||||||
.pipe gulp.dest config.assets.destination
|
|
||||||
|
|
||||||
gulp.task 'server', ->
|
|
||||||
browserSync
|
|
||||||
open: false
|
|
||||||
port: 9001
|
|
||||||
server:
|
|
||||||
baseDir: './public'
|
|
||||||
|
|
||||||
gulp.task 'watch', ->
|
|
||||||
gulp.watch config.templates.watch, ['templates']
|
|
||||||
gulp.watch config.styles.watch, ['styles']
|
|
||||||
gulp.watch config.assets.watch, ['assets']
|
|
||||||
|
|
||||||
bundle = watchify browserify browserifyConfig
|
|
||||||
|
|
||||||
bundle.on 'update', ->
|
|
||||||
build = bundle.bundle()
|
|
||||||
.on 'error', handleError
|
|
||||||
.pipe source config.scripts.filename
|
|
||||||
|
|
||||||
build
|
|
||||||
.pipe gulp.dest config.scripts.destination
|
|
||||||
.pipe(duration('Rebundling browserify bundle'))
|
|
||||||
.pipe(browserSync.reload(stream: true))
|
|
||||||
|
|
||||||
.emit 'update'
|
|
||||||
|
|
||||||
buildTasks = ['templates', 'styles', 'assets']
|
|
||||||
|
|
||||||
gulp.task 'build', buildTasks.concat ['scripts']
|
|
||||||
gulp.task 'default', buildTasks.concat ['watch', 'server']
|
|
||||||
157
gulpfile.js
Normal file
157
gulpfile.js
Normal file
@@ -0,0 +1,157 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
var browserify = require('browserify');
|
||||||
|
var browserSync = require('browser-sync');
|
||||||
|
var duration = require('gulp-duration');
|
||||||
|
var ecstatic = require('ecstatic');
|
||||||
|
var gulp = require('gulp');
|
||||||
|
var gutil = require('gulp-util');
|
||||||
|
var jade = require('gulp-jade');
|
||||||
|
var notify = require('gulp-notify');
|
||||||
|
var prefix = require('gulp-autoprefixer');
|
||||||
|
var source = require('vinyl-source-stream');
|
||||||
|
var sourcemaps = require('gulp-sourcemaps');
|
||||||
|
var streamify = require('gulp-streamify');
|
||||||
|
var stylus = require('gulp-stylus');
|
||||||
|
var uglify = require('gulp-uglify');
|
||||||
|
var watchify = require('watchify');
|
||||||
|
|
||||||
|
var production = process.env.NODE_ENV === 'production';
|
||||||
|
|
||||||
|
var config = {
|
||||||
|
scripts: {
|
||||||
|
source: './src/coffee/main.coffee',
|
||||||
|
extensions: ['.coffee'],
|
||||||
|
destination: './public/js/',
|
||||||
|
filename: 'bundle.js'
|
||||||
|
},
|
||||||
|
templates: {
|
||||||
|
source: './src/jade/*.jade',
|
||||||
|
watch: './src/jade/*.jade',
|
||||||
|
destination: './public/'
|
||||||
|
},
|
||||||
|
styles: {
|
||||||
|
source: './src/stylus/style.styl',
|
||||||
|
watch: './src/stylus/*.styl',
|
||||||
|
destination: './public/css/'
|
||||||
|
},
|
||||||
|
assets: {
|
||||||
|
source: './src/assets/**/*.*',
|
||||||
|
watch: './src/assets/**/*.*',
|
||||||
|
destination: './public/'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var browserifyConfig = {
|
||||||
|
entries: [config.scripts.source],
|
||||||
|
extensions: config.scripts.extensions,
|
||||||
|
debug: !production,
|
||||||
|
cache: {},
|
||||||
|
packageCache: {}
|
||||||
|
};
|
||||||
|
|
||||||
|
function handleError(err) {
|
||||||
|
gutil.log(err);
|
||||||
|
gutil.beep();
|
||||||
|
notify({
|
||||||
|
title: 'Compile Error',
|
||||||
|
message: err.message
|
||||||
|
});
|
||||||
|
return this.emit('end');
|
||||||
|
}
|
||||||
|
|
||||||
|
gulp.task('scripts', function() {
|
||||||
|
var pipeline = browserify(browserifyConfig)
|
||||||
|
.bundle()
|
||||||
|
.on('error', handleError)
|
||||||
|
.pipe(source(config.scripts.filename));
|
||||||
|
|
||||||
|
if (production) {
|
||||||
|
pipeline = pipeline.pipe(streamify(uglify()));
|
||||||
|
}
|
||||||
|
return pipeline.pipe(gulp.dest(config.scripts.destination));
|
||||||
|
});
|
||||||
|
|
||||||
|
gulp.task('templates', function() {
|
||||||
|
var pipeline = gulp.src(config.templates.source)
|
||||||
|
.pipe(jade({
|
||||||
|
pretty: !production
|
||||||
|
}))
|
||||||
|
.on('error', handleError)
|
||||||
|
.pipe(gulp.dest(config.templates.destination));
|
||||||
|
|
||||||
|
if(production) {
|
||||||
|
return pipeline;
|
||||||
|
}
|
||||||
|
|
||||||
|
return pipeline.pipe(browserSync.reload({
|
||||||
|
stream: true
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
|
||||||
|
gulp.task('styles', function() {
|
||||||
|
var pipeline = gulp.src(config.styles.source);
|
||||||
|
|
||||||
|
if (!production) {
|
||||||
|
pipeline = pipeline.pipe(sourcemaps.init());
|
||||||
|
}
|
||||||
|
|
||||||
|
pipeline = pipeline.pipe(stylus({
|
||||||
|
'include css': true,
|
||||||
|
compress: production
|
||||||
|
}))
|
||||||
|
.on('error', handleError)
|
||||||
|
.pipe(prefix('last 2 versions', 'Chrome 34', 'Firefox 28', 'iOS 7'));
|
||||||
|
|
||||||
|
if (!production) {
|
||||||
|
pipeline = pipeline.pipe(sourcemaps.write('.'));
|
||||||
|
}
|
||||||
|
|
||||||
|
pipeline = pipeline.pipe(gulp.dest(config.styles.destination));
|
||||||
|
|
||||||
|
if (production) {
|
||||||
|
return pipeline;
|
||||||
|
}
|
||||||
|
|
||||||
|
return pipeline.pipe(browserSync.stream({
|
||||||
|
match: '**/*.css'
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
|
||||||
|
gulp.task('assets', function() {
|
||||||
|
return gulp.src(config.assets.source)
|
||||||
|
.pipe(gulp.dest(config.assets.destination));
|
||||||
|
});
|
||||||
|
|
||||||
|
gulp.task('server', function() {
|
||||||
|
return browserSync({
|
||||||
|
open: false,
|
||||||
|
port: 9001,
|
||||||
|
server: {
|
||||||
|
baseDir: './public'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
gulp.task('watch', function() {
|
||||||
|
gulp.watch(config.templates.watch, ['templates']);
|
||||||
|
gulp.watch(config.styles.watch, ['styles']);
|
||||||
|
gulp.watch(config.assets.watch, ['assets']);
|
||||||
|
|
||||||
|
var bundle = watchify(browserify(browserifyConfig));
|
||||||
|
|
||||||
|
bundle.on('update', function() {
|
||||||
|
var build = bundle.bundle()
|
||||||
|
.on('error', handleError)
|
||||||
|
.pipe(source(config.scripts.filename));
|
||||||
|
|
||||||
|
build.pipe(gulp.dest(config.scripts.destination))
|
||||||
|
.pipe(duration('Rebundling browserify bundle'))
|
||||||
|
.pipe(browserSync.reload({stream: true}));
|
||||||
|
}).emit('update');
|
||||||
|
});
|
||||||
|
|
||||||
|
var buildTasks = ['templates', 'styles', 'assets'];
|
||||||
|
|
||||||
|
gulp.task('build', buildTasks.concat(['scripts']));
|
||||||
|
gulp.task('default', buildTasks.concat(['watch', 'server']));
|
||||||
@@ -15,9 +15,7 @@
|
|||||||
"gulp",
|
"gulp",
|
||||||
"template"
|
"template"
|
||||||
],
|
],
|
||||||
"dependencies": {
|
"dependencies": {},
|
||||||
"coffee-script": "~1.8.0"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"bower": "~1.3.5",
|
"bower": "~1.3.5",
|
||||||
"browser-sync": "^2.7.2",
|
"browser-sync": "^2.7.2",
|
||||||
|
|||||||
Reference in New Issue
Block a user