Update to Node 6.9, Semantic 2.2.6, fixed .gitignore for Semantic build
diff --git a/.gitignore b/.gitignore
index bba8f85..8272c5c 100755
--- a/.gitignore
+++ b/.gitignore
@@ -21,10 +21,10 @@
npm-debug.log
.tmp
/node_modules/*
-build
+/build
-static/*
-!static/admin/
+/static/*
+/!static/admin/
archive/*
diff --git a/package.json b/package.json
index 883cac9..16a9398 100644
--- a/package.json
+++ b/package.json
@@ -26,41 +26,18 @@
"Tap"
],
"engines": {
- "node": ">= 4.4.5"
+ "node": "^6.9.1"
},
"dependencies": {
- "better-console": "^0.2.4",
"d3": "^4.1.1",
- "extend": "^3.0.0",
- "gulp-chmod": "^1.3.0",
- "gulp-clone": "^1.0.0",
- "gulp-concat-css": "^2.3.0",
- "gulp-copy": "0.0.2",
- "gulp-dedupe": "0.0.2",
- "gulp-flatten": "^0.3.0",
- "gulp-header": "^1.8.7",
- "gulp-help": "^1.6.1",
- "gulp-if": "^2.0.1",
- "gulp-less": "^3.1.0",
- "gulp-minify-css": "^1.2.4",
- "gulp-notify": "^2.2.0",
- "gulp-plumber": "^1.1.0",
- "gulp-print": "^2.0.1",
- "gulp-rename": "^1.2.2",
- "gulp-replace": "^0.5.4",
- "gulp-rtlcss": "^1.0.0",
- "gulp-watch": "^4.3.8",
"lodash": "^4.13.1",
- "map-stream": "0.0.6",
"react": "^15.2.0",
"react-dom": "^15.2.0",
"react-redux": "^4.4.5",
"react-router": "^2.5.2",
"redux": "^3.5.2",
"redux-thunk": "^2.1.0",
- "require-dot-file": "^0.4.0",
- "semantic-ui": "^2.2.1",
- "yamljs": "^0.2.8"
+ "semantic-ui": "^2.2.6"
},
"devDependencies": {
"babel-core": "^6.10.4",
diff --git a/semantic/tasks/build/assets.js b/semantic/tasks/build/assets.js
new file mode 100644
index 0000000..bc37ad9
--- /dev/null
+++ b/semantic/tasks/build/assets.js
@@ -0,0 +1,35 @@
+/*******************************
+ Build Task
+*******************************/
+
+var
+ gulp = require('gulp'),
+
+ // gulp dependencies
+ chmod = require('gulp-chmod'),
+ gulpif = require('gulp-if'),
+
+ // config
+ config = require('../config/user'),
+ tasks = require('../config/tasks'),
+
+ // shorthand
+ globs = config.globs,
+ assets = config.paths.assets,
+ output = config.paths.output,
+ source = config.paths.source,
+
+ log = tasks.log
+;
+
+module.exports = function(callback) {
+
+ console.info('Building assets');
+
+ // copy assets
+ return gulp.src(source.themes + '/**/assets/**/*.*')
+ .pipe(gulpif(config.hasPermission, chmod(config.permission)))
+ .pipe(gulp.dest(output.themes))
+ ;
+
+};
\ No newline at end of file
diff --git a/semantic/tasks/build/css.js b/semantic/tasks/build/css.js
new file mode 100644
index 0000000..6f579d8
--- /dev/null
+++ b/semantic/tasks/build/css.js
@@ -0,0 +1,113 @@
+/*******************************
+ Build Task
+*******************************/
+
+var
+ gulp = require('gulp'),
+
+ // node dependencies
+ console = require('better-console'),
+ fs = require('fs'),
+
+ // gulp dependencies
+ autoprefixer = require('gulp-autoprefixer'),
+ chmod = require('gulp-chmod'),
+ clone = require('gulp-clone'),
+ flatten = require('gulp-flatten'),
+ gulpif = require('gulp-if'),
+ less = require('gulp-less'),
+ minifyCSS = require('gulp-clean-css'),
+ plumber = require('gulp-plumber'),
+ print = require('gulp-print'),
+ rename = require('gulp-rename'),
+ replace = require('gulp-replace'),
+ runSequence = require('run-sequence'),
+
+ // config
+ config = require('../config/user'),
+ tasks = require('../config/tasks'),
+ install = require('../config/project/install'),
+
+ // shorthand
+ globs = config.globs,
+ assets = config.paths.assets,
+ output = config.paths.output,
+ source = config.paths.source,
+
+ banner = tasks.banner,
+ comments = tasks.regExp.comments,
+ log = tasks.log,
+ settings = tasks.settings
+;
+
+// add internal tasks (concat release)
+require('../collections/internal')(gulp);
+
+module.exports = function(callback) {
+
+ var
+ tasksCompleted = 0,
+ maybeCallback = function() {
+ tasksCompleted++;
+ if(tasksCompleted === 2) {
+ callback();
+ }
+ },
+
+ stream,
+ compressedStream,
+ uncompressedStream
+ ;
+
+ console.info('Building CSS');
+
+ if( !install.isSetup() ) {
+ console.error('Cannot build files. Run "gulp install" to set-up Semantic');
+ return;
+ }
+
+ // unified css stream
+ stream = gulp.src(source.definitions + '/**/' + globs.components + '.less')
+ .pipe(plumber(settings.plumber.less))
+ .pipe(less(settings.less))
+ .pipe(autoprefixer(settings.prefix))
+ .pipe(replace(comments.variables.in, comments.variables.out))
+ .pipe(replace(comments.license.in, comments.license.out))
+ .pipe(replace(comments.large.in, comments.large.out))
+ .pipe(replace(comments.small.in, comments.small.out))
+ .pipe(replace(comments.tiny.in, comments.tiny.out))
+ .pipe(flatten())
+ ;
+
+ // two concurrent streams from same source to concat release
+ uncompressedStream = stream.pipe(clone());
+ compressedStream = stream.pipe(clone());
+
+ // uncompressed component css
+ uncompressedStream
+ .pipe(plumber())
+ .pipe(replace(assets.source, assets.uncompressed))
+ .pipe(gulpif(config.hasPermission, chmod(config.permission)))
+ .pipe(gulp.dest(output.uncompressed))
+ .pipe(print(log.created))
+ .on('end', function() {
+ runSequence('package uncompressed css', maybeCallback);
+ })
+ ;
+
+ // compressed component css
+ compressedStream = stream
+ .pipe(plumber())
+ .pipe(clone())
+ .pipe(replace(assets.source, assets.compressed))
+ .pipe(minifyCSS(settings.minify))
+ .pipe(rename(settings.rename.minCSS))
+ .pipe(gulpif(config.hasPermission, chmod(config.permission)))
+ .pipe(gulp.dest(output.compressed))
+ .pipe(print(log.created))
+ .on('end', function() {
+ runSequence('package compressed css', maybeCallback);
+ })
+ ;
+
+};
diff --git a/semantic/tasks/build/javascript.js b/semantic/tasks/build/javascript.js
new file mode 100644
index 0000000..f99c130
--- /dev/null
+++ b/semantic/tasks/build/javascript.js
@@ -0,0 +1,77 @@
+/*******************************
+ Build Task
+*******************************/
+
+var
+ gulp = require('gulp'),
+
+ // node dependencies
+ console = require('better-console'),
+ fs = require('fs'),
+
+ // gulp dependencies
+ chmod = require('gulp-chmod'),
+ flatten = require('gulp-flatten'),
+ gulpif = require('gulp-if'),
+ plumber = require('gulp-plumber'),
+ print = require('gulp-print'),
+ rename = require('gulp-rename'),
+ replace = require('gulp-replace'),
+ uglify = require('gulp-uglify'),
+
+ // config
+ config = require('../config/user'),
+ tasks = require('../config/tasks'),
+ install = require('../config/project/install'),
+
+ // shorthand
+ globs = config.globs,
+ assets = config.paths.assets,
+ output = config.paths.output,
+ source = config.paths.source,
+
+ banner = tasks.banner,
+ comments = tasks.regExp.comments,
+ log = tasks.log,
+ settings = tasks.settings
+;
+
+// add internal tasks (concat release)
+require('../collections/internal')(gulp);
+
+module.exports = function(callback) {
+
+ var
+ stream,
+ compressedStream,
+ uncompressedStream
+ ;
+
+ console.info('Building Javascript');
+
+ if( !install.isSetup() ) {
+ console.error('Cannot build files. Run "gulp install" to set-up Semantic');
+ return;
+ }
+
+ // copy source javascript
+ gulp.src(source.definitions + '/**/' + globs.components + '.js')
+ .pipe(plumber())
+ .pipe(flatten())
+ .pipe(replace(comments.license.in, comments.license.out))
+ .pipe(gulp.dest(output.uncompressed))
+ .pipe(gulpif(config.hasPermission, chmod(config.permission)))
+ .pipe(print(log.created))
+ .pipe(uglify(settings.uglify))
+ .pipe(rename(settings.rename.minJS))
+ .pipe(gulp.dest(output.compressed))
+ .pipe(gulpif(config.hasPermission, chmod(config.permission)))
+ .pipe(print(log.created))
+ .on('end', function() {
+ gulp.start('package compressed js');
+ gulp.start('package uncompressed js');
+ callback();
+ })
+ ;
+
+};
\ No newline at end of file