konva/gulpfile.js

169 lines
4.0 KiB
JavaScript
Raw Normal View History

2015-04-07 16:03:08 +08:00
var gulp = require('gulp');
var rename = require('gulp-rename');
var uglify = require('gulp-uglify');
var concat = require('gulp-concat');
var replace = require('gulp-replace');
2018-06-20 19:09:17 +08:00
// var mochaPhantomJS = require('gulp-mocha-phantomjs');
var jsdoc = require('gulp-jsdoc3');
2015-04-07 16:03:08 +08:00
var connect = require('gulp-connect');
2015-05-04 17:02:16 +08:00
var jscpd = require('gulp-jscpd');
var eslint = require('gulp-eslint');
2017-08-25 20:00:58 +08:00
var gutil = require('gulp-util');
2019-01-02 04:59:27 +08:00
var ts = require('gulp-typescript');
2015-04-07 16:03:08 +08:00
var fs = require('fs');
var NodeParams = fs
.readFileSync('./resources/doc-includes/NodeParams.txt')
.toString();
var ContainerParams = fs
.readFileSync('./resources/doc-includes/ContainerParams.txt')
.toString();
var ShapeParams = fs
.readFileSync('./resources/doc-includes/ShapeParams.txt')
.toString();
2015-04-07 16:03:08 +08:00
var conf = require('./package.json');
var sourceFiles = [
// core
'src/Global.js',
'src/Util.js',
'src/Canvas.js',
'src/Context.js',
'src/Factory.js',
'src/Node.js',
// filters
'src/filters/Grayscale.js',
'src/filters/Brighten.js',
'src/filters/Invert.js',
'src/filters/Blur.js',
'src/filters/Mask.js',
'src/filters/RGB.js',
'src/filters/RGBA.js',
'src/filters/HSV.js',
'src/filters/HSL.js',
'src/filters/Emboss.js',
'src/filters/Enhance.js',
'src/filters/Posterize.js',
'src/filters/Noise.js',
'src/filters/Pixelate.js',
'src/filters/Threshold.js',
'src/filters/Sepia.js',
'src/filters/Solarize.js',
'src/filters/Kaleidoscope.js',
2018-02-01 15:26:40 +08:00
'src/filters/Contrast.js',
// core
'src/Container.js',
'src/Shape.js',
'src/Stage.js',
'src/BaseLayer.js',
'src/Layer.js',
'src/FastLayer.js',
'src/Group.js',
'src/Animation.js',
'src/Tween.js',
'src/DragAndDrop.js',
// shapes
'src/shapes/Rect.js',
'src/shapes/Circle.js',
'src/shapes/Ellipse.js',
'src/shapes/Ring.js',
'src/shapes/Wedge.js',
'src/shapes/Arc.js',
'src/shapes/Image.js',
'src/shapes/Text.js',
'src/shapes/Line.js',
'src/shapes/Sprite.js',
'src/shapes/Path.js',
'src/shapes/TextPath.js',
'src/shapes/RegularPolygon.js',
'src/shapes/Star.js',
'src/shapes/Label.js',
2017-12-19 15:31:36 +08:00
'src/shapes/Arrow.js',
'src/shapes/Transformer.js'
2015-04-07 16:03:08 +08:00
];
2019-01-02 04:59:27 +08:00
var tsProject = ts.createProject('tsconfig.json');
2015-04-07 16:03:08 +08:00
function build() {
return gulp
2019-01-02 04:59:27 +08:00
.src(['./dist/konva.js'])
.pipe(replace('@@shapeParams', ShapeParams))
.pipe(replace('@@nodeParams', NodeParams))
.pipe(replace('@@containerParams', ContainerParams))
.pipe(replace('@@version', conf.version))
.pipe(replace('@@date', new Date().toDateString()));
2015-04-07 16:03:08 +08:00
}
2015-05-04 17:14:11 +08:00
// create development build
2015-04-07 16:03:08 +08:00
gulp.task('dev-build', function() {
return build().pipe(gulp.dest('./dist/'));
2015-04-07 16:03:08 +08:00
});
2015-05-04 17:14:11 +08:00
// create usual build konva.js and konva.min.js
2015-04-07 16:03:08 +08:00
gulp.task('build', function() {
return build()
.pipe(rename('konva.js'))
.pipe(gulp.dest('./'))
2017-08-25 20:00:58 +08:00
.pipe(uglify({ output: { comments: /^!|@preserve|@license|@cc_on/i } }))
.on('error', function(err) {
gutil.log(gutil.colors.red('[Error]'), err.toString());
})
.pipe(rename('konva.min.js'))
.pipe(gulp.dest('./'));
2015-04-07 16:03:08 +08:00
});
2015-05-04 17:14:11 +08:00
// local server for better development
2015-04-07 16:03:08 +08:00
gulp.task('server', function() {
connect.server();
2015-04-07 16:03:08 +08:00
});
2015-05-04 17:14:11 +08:00
// lint files
2015-04-07 16:03:08 +08:00
gulp.task('lint', function() {
2018-06-20 19:00:18 +08:00
return (
gulp
.src('./src/**/*.js')
.pipe(
eslint({
configFile: './.eslintrc'
})
)
// eslint.format() outputs the lint results to the console.
// Alternatively use eslint.formatEach() (see Docs).
.pipe(eslint.format())
// To have the process exit with an error code (1) on
// lint error, return the stream and pipe to failOnError last.
2018-06-20 19:00:18 +08:00
.pipe(eslint.failOnError())
);
2015-05-04 17:02:16 +08:00
});
2015-05-04 17:14:11 +08:00
// check code for duplication
2015-05-04 17:02:16 +08:00
gulp.task('inspect', function() {
return gulp.src('./src/**/*.js').pipe(
jscpd({
2015-05-04 17:02:16 +08:00
'min-lines': 10,
verbose: true
})
);
2015-04-07 16:03:08 +08:00
});
// // generate documentation
2015-04-07 16:03:08 +08:00
gulp.task('api', function() {
2017-09-05 19:30:08 +08:00
return gulp.src('./konva.js').pipe(
jsdoc({
opts: {
destination: './api'
}
})
);
2015-04-07 16:03:08 +08:00
});
gulp.task('watch', function() {
gulp.watch(['src/**/*.js'], ['dev-build']);
2015-04-07 16:03:08 +08:00
});
2015-05-04 17:02:16 +08:00
gulp.task('default', ['dev-build', 'watch', 'server']);