Browse Source

integration of gulp process

Skylsmoi 7 years ago
parent
commit
090473ab39

+ 7 - 0
.gitignore View File

@@ -64,3 +64,10 @@ wsgidav.conf
64 64
 # Temporary files
65 65
 *~
66 66
 *.sqlite
67
+
68
+# npm packages
69
+/node_modules/
70
+
71
+# builded files from gulp scripts
72
+/tracim/tracim/public/assets/dist/
73
+/tracim/tracim/public/assets/js/main_es5.js

+ 13 - 0
.jshintrc View File

@@ -0,0 +1,13 @@
1
+{
2
+    "esversion" :   6,
3
+    "unused":       true,
4
+    "undef":        true,
5
+    "browser":      true,
6
+    "asi":          true,
7
+    "globals": {
8
+        "$":        true,
9
+        "__":       true,
10
+        "console":  true,
11
+        "moment":   true
12
+    }
13
+}

+ 137 - 0
gulpfile.js View File

@@ -0,0 +1,137 @@
1
+'use strict'
2
+
3
+const gulp        = require('gulp')
4
+const concat      = require('gulp-concat')
5
+// const sass        = require('gulp-sass')
6
+// const stylus      = require('gulp-stylus')
7
+const rename      = require('gulp-rename')
8
+const uglify      = require('gulp-uglify')
9
+const cleanCSS    = require('gulp-clean-css')
10
+const babel       = require('gulp-babel')
11
+const gulpsync    = require('gulp-sync')(gulp)
12
+const jshint      = require('gulp-jshint')
13
+const stylish     = require('jshint-stylish')
14
+const expect      = require('gulp-expect-file')
15
+const plumber     = require('gulp-plumber')
16
+const browserSync = require('browser-sync').create()
17
+const autoprefixer= require('gulp-autoprefixer')
18
+const rewriteCSS  = require('gulp-rewrite-css')
19
+
20
+const _srcdir = 'tracim/tracim/public/assets/'
21
+const _tpldir = 'tracim/tracim/templates/'
22
+
23
+const listCssFiles = [
24
+  _srcdir + 'css/bootstrap.min.css',
25
+  _srcdir + 'font-awesome-4.2.0/css/font-awesome.css',
26
+  _srcdir + 'select2-4.0.3/css/select2.min.css',
27
+  _srcdir + 'css/dashboard.css'
28
+]
29
+
30
+const listJsFiles = [
31
+  _srcdir + 'select2-4.0.3/js/select2.min.js',
32
+  _srcdir + 'js/bootstrap.min.js',
33
+  _srcdir + 'js/trad.js',
34
+  _srcdir + 'js/main_es5.js'
35
+]
36
+
37
+// CSS task
38
+gulp.task('css', function () {
39
+  const dest = _srcdir + '/dist/'
40
+
41
+  return gulp.src(listCssFiles)
42
+    .pipe(expect({verbose: true}, listCssFiles))
43
+    .pipe(rewriteCSS({
44
+        destination: dest,
45
+        // debug: true
46
+    }))
47
+    // .pipe(sass().on('error', sass.logError))
48
+    // .pipe(stylus())
49
+    .pipe(autoprefixer({
50
+        browsers: ['last 2 versions'],
51
+        cascade: false
52
+    }))
53
+    .pipe(concat('all.css'))
54
+    .pipe(gulp.dest(dest))
55
+    .pipe(browserSync.stream())
56
+})
57
+
58
+// JS tasks
59
+gulp.task('js_hint', function() {
60
+  return gulp.src(_srcdir + '/js/main.js')
61
+    .pipe(expect({verbose: true}, _srcdir + '/js/main.js'))
62
+    .pipe(jshint())
63
+    .pipe(jshint.reporter(stylish))
64
+})
65
+gulp.task('js_transpiling', function() {
66
+  return gulp.src(_srcdir + '/js/main.js')
67
+    .pipe(plumber())
68
+    .pipe(babel({ presets: ['es2015'] }))
69
+    .pipe(concat('main_es5.js'))
70
+    .pipe(gulp.dest(_srcdir + '/js/'))
71
+})
72
+gulp.task('js_concat', function() {
73
+  return gulp.src(listJsFiles)
74
+    .pipe(expect({verbose: true}, listJsFiles))
75
+    .pipe(concat('all.js'))
76
+    .pipe(gulp.dest(_srcdir + '/dist/'))
77
+    .pipe(browserSync.stream())
78
+})
79
+gulp.task('js_sync', gulpsync.sync(['js_transpiling', 'js_concat']))
80
+gulp.task('js', ['js_hint', 'js_sync'])
81
+
82
+// BUILD tasks
83
+gulp.task('prod_css', ['css'], function () {
84
+    return gulp.src(_srcdir + '/dist/all.css')
85
+        .pipe(expect({verbose: true}, _srcdir + '/dist/all.css'))
86
+        .pipe(cleanCSS({keepSpecialComments:0}))
87
+        .pipe(concat('all.min.css'))
88
+        .pipe(gulp.dest(_srcdir + '/dist/'))
89
+})
90
+gulp.task('prod_js', ['js'], function () {
91
+    return gulp.src(_srcdir + '/dist/all.js')
92
+        .pipe(expect({verbose: true}, _srcdir + '/dist/all.js'))
93
+        .pipe(uglify())
94
+        .pipe(concat('all.min.js'))
95
+        .pipe(gulp.dest(_srcdir + '/dist/'))
96
+})
97
+
98
+gulp.task('prod', ['prod_css', 'prod_js'])
99
+
100
+gulp.task('dev', ['css', 'js'])
101
+
102
+// WATCH task
103
+gulp.task('watch', function () {
104
+  gulp.watch([
105
+    _srcdir + '/js/*.js',
106
+    '!'+_srcdir+'/js/scripts_es5.js',
107
+    '!'+_srcdir+'/js/*.min.*'
108
+  ], {verbose: true, debounceDelay: 2000}, ['js'])
109
+
110
+  gulp.watch([
111
+    _srcdir + '/css/*.css',
112
+    '!'+_srcdir+'/css/*.min.*',
113
+    '!'+_srcdir+'/css/*.map'
114
+  ], ['css'])
115
+})
116
+
117
+// LIVERELOAD task
118
+gulp.task('livesync', function() {
119
+  browserSync.init({
120
+    ghostMode: false, // comment this line to mirror input click and scroll on all opened browsers
121
+    proxy: "127.0.0.1:8080",
122
+    browser: "chromium",
123
+    port: 8081
124
+  })
125
+
126
+  gulp.watch(_tpldir + '**/*.html').on('change', browserSync.reload)
127
+})
128
+
129
+gulp.task('watchsync', ['watch', 'livesync'])
130
+
131
+// DEFAULT task
132
+gulp.task('default', function () {
133
+  console.log(`
134
+    Usable tasks : watchsync, watch, dev, prod, js, css
135
+    Other available tasks : livesync, js_sync, js_concat, js_hint, prod_css, prod_js
136
+  `)
137
+})

+ 38 - 0
package.json View File

@@ -0,0 +1,38 @@
1
+{
2
+  "name": "tracim",
3
+  "version": "1.0.0",
4
+  "description": "",
5
+  "main": "",
6
+  "scripts": {
7
+    "test": "echo \"Error: no test specified\" && exit 1"
8
+  },
9
+  "repository": {
10
+    "type": "git",
11
+    "url": "git+https://github.com/tracim/tracim.git"
12
+  },
13
+  "author": "",
14
+  "license": "ISC",
15
+  "bugs": {
16
+    "url": "https://github.com/tracim/tracim/issues"
17
+  },
18
+  "homepage": "https://github.com/tracim/tracim#readme",
19
+  "dependencies": {
20
+    "babel-preset-es2015": "^6.9.0",
21
+    "browser-sync": "^2.14.0",
22
+    "gulp": "^3.9.1",
23
+    "gulp-autoprefixer": "^3.1.1",
24
+    "gulp-babel": "^6.1.2",
25
+    "gulp-clean-css": "^2.0.8",
26
+    "gulp-concat": "^2.6.0",
27
+    "gulp-expect-file": "0.0.7",
28
+    "gulp-jshint": "^2.0.1",
29
+    "gulp-plumber": "^1.1.0",
30
+    "gulp-rename": "^1.2.2",
31
+    "gulp-replace": "^0.5.4",
32
+    "gulp-rewrite-css": "^1.0.4",
33
+    "gulp-sync": "^0.1.4",
34
+    "gulp-uglify": "^1.5.3",
35
+    "jshint": "^2.9.2",
36
+    "jshint-stylish": "^2.2.0"
37
+  }
38
+}

+ 2 - 3
tracim/tracim/public/assets/js/main.js View File

@@ -2,8 +2,8 @@ $(document).ready(function () {
2 2
 
3 3
   // toggle sidebar-left width to fixed or auto
4 4
   $('#toggle-left-sidebar-width').click( function() {
5
-    sidebar = $('#sidebar-left')
6
-    buttonIcon = $('> i', this)
5
+    const sidebar = $('#sidebar-left')
6
+    const buttonIcon = $('> i', this)
7 7
 
8 8
     if (sidebar.hasClass('fixed-width-sidebar')) {
9 9
       sidebar.removeClass('fixed-width-sidebar')
@@ -63,5 +63,4 @@ $(document).ready(function () {
63 63
       }
64 64
     })
65 65
   }
66
-
67 66
 })

+ 3 - 8
tracim/tracim/templates/master_authenticated.mak View File

@@ -11,10 +11,8 @@
11 11
         <meta name="description" content="">
12 12
         <meta name="author" content="">
13 13
         <link rel="icon" href="/favicon.ico">
14
-        <link href="${tg.url('/assets/css/bootstrap.min.css')}" rel="stylesheet">
15
-        <link href="${tg.url('/assets/font-awesome-4.2.0/css/font-awesome.css')}" rel="stylesheet">
16
-        <link href="${tg.url('/assets/select2-4.0.3/css/select2.min.css')}" rel="stylesheet">
17
-        <link href="${tg.url('/assets/css/dashboard.css')}" rel="stylesheet">
14
+
15
+        <link href="${tg.url('/assets/dist/all.css')}" rel="stylesheet">
18 16
 
19 17
         <script>
20 18
             var shiftWindow = function() { scrollBy(0, -50) };
@@ -35,10 +33,7 @@
35 33
         </div>
36 34
         ${self.footer()}
37 35
 
38
-        <script src="${tg.url('/assets/select2-4.0.3/js/select2.min.js')}"></script>
39
-        <script src="${tg.url('/assets/js/bootstrap.min.js')}"></script>
40
-        <script src="${tg.url('/assets/js/trad.js')}"></script>
41
-        <script src="${tg.url('/assets/js/main.js')}"></script>
36
+        <script src="${tg.url('/assets/dist/all.js')}"></script>
42 37
         ${CFG.TRACKER_JS_CONTENT|n}
43 38
     </body>
44 39
 

+ 0 - 1
tracim/tracim/templates/master_authenticated_left_treeview.mak View File

@@ -43,7 +43,6 @@
43 43
     ## GENERIC STUFF LIKE SCRIPTS
44 44
     ##
45 45
     ###########################################
46
-    <script src="${tg.url('/assets/js/jquery.min.js')}"></script>
47 46
     <!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
48 47
     <script src="${tg.url('/assets/js/ie10-viewport-bug-workaround.js')}"></script>
49 48
     <!-- TinyMCE ================================================== -->