Compact css tweak
[openemr.git] / interface / gulpfile.js
blobd1dc8b53782d2def113370c9d6b8baf2ac295e02
1 'use strict';
3 // modules
4 var browserSync = require('browser-sync');
5 var csso = require('gulp-csso');
6 var del = require('del');
7 var gap = require('gulp-append-prepend');
8 var gulp = require('gulp');
9 var argv = require('minimist')(process.argv.slice(2));
10 var gulpif = require('gulp-if');
11 var prefix = require('gulp-autoprefixer');
12 var reload = browserSync.reload;
13 var rename = require('gulp-rename');
14 var runSequence = require('run-sequence');
15 var sass = require('gulp-sass');
16 var sourcemaps = require('gulp-sourcemaps');
18 // configuration
19 var config = {
20     dev: argv['dev'],
21     build: argv['b'], // temporary until build == production
22     proxy: argv['p'],
23     src: {
24         styles: {
25             style_uni: 'themes/style_*.scss',
26             style_color: 'themes/colors/*.scss',
27             all: 'themes/**/style_*.css',
28             all_rtl: 'themes/**/*style_*.css',
29         }
30     },
31     dist: {
32         storybook: '.out/'
33     },
34     dest: {
35         themes: 'themes'
36     }
39 // clean - will make even stricter once css files are no longer committed
40 gulp.task('clean', function () {
41     let ignore = "!" + config.dist.storybook+ '.gitignore';
42     del.sync([config.dist.storybook + "*", ignore]);
43 });
45 gulp.task('ingest', function () {
46     if (config.dev && typeof config.dev !== "boolean") {
47         // allows for custom proxy to be passed into script
48         config.proxy = config.dev;
49         config.dev = true;
50     }
51 });
53 gulp.task('sync', ['styles'], function () {
54     if (config.proxy) {
55         browserSync.init({
56             proxy: "127.0.0.1:" + config.proxy
57         });
58     }
60     if (config.dev && !config.build) {
61         gulp.watch('themes/**/*.scss', ['styles']);
62     } else {
63         // hack to get font awesome files into the .out directory
64         gulp.src([
65             '../public/assets/font-awesome-4-6-3/fonts/**/*.{ttf,woff,eof,svg}'
66             ], {base: '../'})
67             .pipe(gulp.dest(config.dist.storybook));
68     }
69 });
71 // styles
72 const autoGeneratedHeader = `
73 /*! This style sheet was autogenerated using gulp + scss
74  *  For usage instructions, see: https://github.com/openemr/openemr/blob/master/interface/README.md
75  */
77 gulp.task('styles:style_uni', function () {
78     gulp.src(config.src.styles.style_uni)
79         .pipe(sourcemaps.init())
80         .pipe(sass().on('error', sass.logError))
81         .pipe(prefix('last 1 version'))
82         .pipe(gap.prependText(autoGeneratedHeader))
83         .pipe(gulpif(!config.dev, csso()))
84         .pipe(gulpif(!config.dev,sourcemaps.write()))
85         .pipe(gulp.dest(config.dest.themes))
86         .pipe(gulpif(config.build, gulp.dest(config.dist.storybook + config.dest.themes)))
87         .pipe(gulpif(config.dev, reload({stream:true})));
88 });
90 gulp.task('styles:style_color', function () {
91     gulp.src(config.src.styles.style_color)
92         .pipe(sourcemaps.init())
93         .pipe(sass().on('error', sass.logError))
94         .pipe(prefix('last 1 version'))
95         .pipe(gap.prependText(autoGeneratedHeader))
96         .pipe(gulpif(!config.dev, csso()))
97         .pipe(gulpif(!config.dev,sourcemaps.write()))
98         .pipe(gulp.dest(config.dest.themes))
99         .pipe(gulpif(config.build, gulp.dest(config.dist.storybook + config.dest.themes)))
100         .pipe(gulpif(config.dev, reload({stream:true})));
103 gulp.task('styles:rtl', function () {
104     gulp.src(config.src.styles.all)
105         .pipe(sourcemaps.init())
106         .pipe(sass().on('error', sass.logError))
107         .pipe(prefix('last 1 version'))
108         .pipe(gulpif(!config.dev, csso()))
109         .pipe(gap.appendFile('themes/rtl.css'))
110         .pipe(rename({
111             dirname: "",
112             prefix:"rtl_"
113         }))
114         .pipe(gulp.dest(config.dest.themes))
115         .pipe(gulpif(config.build, gulp.dest(config.dist.storybook + config.dest.themes)))
116         .pipe(gulpif(config.dev, reload({stream:true})));
119 gulp.task('styles:style_list', function () {
120     gulp.src(config.src.styles.all_rtl)
121         .pipe(require('gulp-filelist')('themeOptions.json', {flatten: true, removeExtensions: true}))
122         .pipe(gulp.dest('.storybook'));
125 gulp.task('styles', ['styles:style_uni', 'styles:style_color', 'styles:rtl', 'styles:style_list']);
127 if (config.dev && !config.build) {
128     gulp.task('default', [ 'ingest', 'sync' ]);
129 } else {
130     gulp.task('default', function (callback) {
131         runSequence('clean', ['sync'], callback)
132     });