|
|
@@ -1,171 +0,0 @@
|
|
|
-'use strict';
|
|
|
-
|
|
|
-var fs = require('fs');
|
|
|
-
|
|
|
-var gulp = require('gulp');
|
|
|
-var sass = require('gulp-sass');
|
|
|
-var cssmin = require('gulp-cssmin');
|
|
|
-var mocha = require('gulp-spawn-mocha');
|
|
|
-var concat = require('gulp-concat');
|
|
|
-var rename = require('gulp-rename');
|
|
|
-var jshint = require('gulp-jshint');
|
|
|
-var source = require('vinyl-source-stream');
|
|
|
-var webpack = require('webpack');
|
|
|
-var webpackStream = require('webpack-stream');
|
|
|
-
|
|
|
-var del = require('del');
|
|
|
-var stylish = require('jshint-stylish');
|
|
|
-
|
|
|
-var pkg = require('./package.json');
|
|
|
-
|
|
|
-
|
|
|
-var dirs = {
|
|
|
- cssSrc: './resource/css',
|
|
|
- cssDist: './public/css',
|
|
|
- jsSrc: './resource/js',
|
|
|
- jsDist: './public/js',
|
|
|
-};
|
|
|
-
|
|
|
-var tests = {
|
|
|
- watch: ['test/**/*.test.js'],
|
|
|
-}
|
|
|
-
|
|
|
-var css = {
|
|
|
- src: dirs.cssSrc + '/' + pkg.name + '.scss',
|
|
|
- main: dirs.cssDist + '/crowi-main.css',
|
|
|
- dist: dirs.cssDist + '/crowi.css',
|
|
|
- revealSrc: dirs.cssSrc + '/' + pkg.name + '-reveal.scss',
|
|
|
- revealDist: dirs.cssDist + '/crowi-reveal.css',
|
|
|
- watch: ['resource/css/*.scss'],
|
|
|
-};
|
|
|
-
|
|
|
-var js = {
|
|
|
- bundledSrc: [
|
|
|
- 'node_modules/jquery/dist/jquery.js',
|
|
|
- 'node_modules/bootstrap-sass/assets/javascripts/bootstrap.js',
|
|
|
- 'node_modules/inline-attachment/src/inline-attachment.js',
|
|
|
- 'node_modules/jquery.cookie/jquery.cookie.js',
|
|
|
- 'resource/thirdparty-js/jquery.selection.js',
|
|
|
- ],
|
|
|
- src: dirs.jsSrc + '/app.js',
|
|
|
-
|
|
|
- bundled: dirs.jsDist + '/bundled.js',
|
|
|
- dist: dirs.jsDist + '/crowi.js',
|
|
|
- app: dirs.jsDist + '/app.js',
|
|
|
- admin: dirs.jsDist + '/admin.js',
|
|
|
- form: dirs.jsDist + '/form.js',
|
|
|
- presentation: dirs.jsDist + '/presentation.js',
|
|
|
-
|
|
|
- clientWatch: ['resource/js/**/*.js'],
|
|
|
- watch: ['test/**/*.test.js', 'app.js', 'lib/**/*.js'],
|
|
|
- lint: ['app.js', 'lib/**/*.js'],
|
|
|
- tests: tests.watch,
|
|
|
-};
|
|
|
-
|
|
|
-var cssIncludePaths = [
|
|
|
- 'node_modules/bootstrap-sass/assets/stylesheets',
|
|
|
- 'node_modules/font-awesome/scss',
|
|
|
- 'node_modules/reveal.js/css'
|
|
|
-];
|
|
|
-
|
|
|
-gulp.task('js:del', function() {
|
|
|
- var fileList = [];
|
|
|
-
|
|
|
- var actualFiles = fs.readdirSync(dirs.jsDist);
|
|
|
- fileList = actualFiles.map(function(fn){
|
|
|
- if (!fn.match(/.js(on)?$/)) {
|
|
|
- return false
|
|
|
- }
|
|
|
- return dirs.jsDist + '/' + fn;
|
|
|
- }).filter(function(v) { return v; });
|
|
|
-
|
|
|
- return del(fileList);
|
|
|
-});
|
|
|
-
|
|
|
-gulp.task('js:concat', ['js:del'], function() {
|
|
|
- return gulp.src(js.bundledSrc)
|
|
|
- .pipe(concat('bundled.js')) // jQuery
|
|
|
- .pipe(gulp.dest(dirs.jsDist));
|
|
|
-});
|
|
|
-
|
|
|
-// move task for css and js to webpack over time.
|
|
|
-gulp.task('webpack', ['js:concat'], function() {
|
|
|
- return gulp.src(js.src)
|
|
|
- .pipe(webpackStream(
|
|
|
- require('./webpack.config.js'),
|
|
|
- webpack)) // pass webpack2 to webpack-stream
|
|
|
- .pipe(gulp.dest(dirs.jsDist));
|
|
|
-});
|
|
|
-
|
|
|
-gulp.task('jshint', function() {
|
|
|
- return gulp.src(js.lint)
|
|
|
- .pipe(jshint())
|
|
|
- .pipe(jshint.reporter(stylish));
|
|
|
-});
|
|
|
-
|
|
|
-gulp.task('test', function() {
|
|
|
- return gulp.src(js.tests)
|
|
|
- .pipe(mocha({
|
|
|
- r: 'test/bootstrap.js',
|
|
|
- globals: ['chai'],
|
|
|
- R: 'dot',
|
|
|
- }));
|
|
|
-});
|
|
|
-
|
|
|
-gulp.task('css:sass', function() {
|
|
|
- gulp.src(css.revealSrc) // reveal
|
|
|
- .pipe(sass({
|
|
|
- outputStyle: 'nesed',
|
|
|
- sourceComments: 'map',
|
|
|
- includePaths: cssIncludePaths
|
|
|
- }).on('error', sass.logError))
|
|
|
- .pipe(gulp.dest(dirs.cssDist));
|
|
|
-
|
|
|
- return gulp.src(css.src)
|
|
|
- .pipe(sass({
|
|
|
- outputStyle: 'nesed',
|
|
|
- sourceComments: 'map',
|
|
|
- includePaths: cssIncludePaths
|
|
|
- }).on('error', sass.logError))
|
|
|
- .pipe(rename({suffix: '-main'})) // create -main.css to prepare concating with highlight.js's css
|
|
|
- .pipe(gulp.dest(dirs.cssDist));
|
|
|
-});
|
|
|
-
|
|
|
-gulp.task('css:concat', ['css:sass'], function() {
|
|
|
- return gulp.src([
|
|
|
- css.main,
|
|
|
- 'node_modules/highlight.js/styles/tomorrow-night.css',
|
|
|
- 'node_modules/diff2html/dist/diff2html.css',
|
|
|
- ])
|
|
|
- .pipe(concat('crowi.css'))
|
|
|
- .pipe(gulp.dest(dirs.cssDist))
|
|
|
-});
|
|
|
-
|
|
|
-gulp.task('css:min', ['css:concat'], function() {
|
|
|
- gulp.src(css.revealDist)
|
|
|
- .pipe(cssmin())
|
|
|
- .pipe(rename({suffix: '.min'}))
|
|
|
- .pipe(gulp.dest(dirs.cssDist));
|
|
|
-
|
|
|
- return gulp.src(css.dist)
|
|
|
- .pipe(cssmin())
|
|
|
- .pipe(rename({suffix: '.min'}))
|
|
|
- .pipe(gulp.dest(dirs.cssDist));
|
|
|
-});
|
|
|
-
|
|
|
-gulp.task('watch', function() {
|
|
|
- var watchLogger = function(event) {
|
|
|
- console.log('File ' + event.path + ' was ' + event.type + ', running tasks...');
|
|
|
- };
|
|
|
-
|
|
|
- var cssWatcher = gulp.watch(css.watch, ['css:concat']);
|
|
|
- cssWatcher.on('change', watchLogger);
|
|
|
- var jsWatcher = gulp.watch(js.clientWatch, ['webpack']);
|
|
|
- jsWatcher.on('change', watchLogger);
|
|
|
- var testWatcher = gulp.watch(js.watch, ['test']);
|
|
|
- testWatcher.on('change', watchLogger);
|
|
|
-});
|
|
|
-
|
|
|
-gulp.task('css', ['css:sass', 'css:concat',]);
|
|
|
-gulp.task('default', ['css:min', 'webpack', ]);
|
|
|
-gulp.task('dev', ['css:concat', 'webpack', 'jshint', 'test']);
|