-
Notifications
You must be signed in to change notification settings - Fork 21
/
Copy pathgulpfile.coffee
142 lines (129 loc) · 5.08 KB
/
gulpfile.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
"use strict"
# -- DEPENDENCIES --------------------------------------------------------------
gulp = require 'gulp'
coffee = require 'gulp-coffee'
concat = require 'gulp-concat'
flatten = require 'gulp-flatten'
header = require 'gulp-header'
uglify = require 'gulp-uglify'
gutil = require 'gulp-util'
stylus = require 'gulp-stylus'
yml = require 'gulp-yml'
pkg = require './package.json'
# -- FILES ---------------------------------------------------------------------
assets = 'assets/'
source =
coffee: 'source/**/*.coffee'
styl : 'source/**/*.styl'
yml : 'source/**/*.yml'
store =
coffee : [ 'source/store/app.coffee'
'source/app.proxy.coffee'
'source/store/app.*.coffee'
'source/store/entity/*.coffee'
'source/store/atom/*.coffee'
'source/store/molecule/*.coffee'
'source/store/organism/*.coffee'
'source/common/*/*.coffee']
styl : [ 'bower_components/stylmethods/vendor.styl'
'source/store/style/constants.styl'
# ATOMS
'source/store/style/atoms/*.styl'
# FLEXO
'source/store/style/flexo/flexo.theme.styl'
'source/store/style/flexo/flexo.page.styl'
'source/store/style/flexo/flexo.page.*.styl']
thirds :
js : [ 'bower_components/jquery/dist/jquery.min.js'
'bower_components/fancybox/source/jquery.fancybox.js'
'bower_components/moment/min/moment.min.js'
'bower_components/hope/hope.js'
'bower_components/atoms/atoms.standalone.js'
'bower_components/atoms/atoms.app.js']
css : [ 'bower_components/flexo/dist/flexo.css'
'bower_components/fancybox/source/jquery.fancybox.css']
admin =
coffee : [ 'source/admin/app.coffee'
'source/app.proxy.coffee'
'source/admin/app.*.coffee'
'source/admin/entity/*.coffee'
'source/admin/atom/*.coffee'
'source/admin/molecule/*.coffee'
'source/admin/organism/*.coffee'
'source/common/*/*.coffee']
styl : [ 'bower_components/stylmethods/vendor.styl'
'source/admin/style/constants.styl'
# ATOMS
'source/admin/style/atoms/*.styl'
'bower_components/atoms-icons/atoms.icons.styl'
# FLEXO
'source/admin/style/flexo/flexo.styl'
'source/admin/style/flexo/flexo.page.styl'
'source/admin/style/flexo/flexo.page.*.styl']
yml : [ 'source/*/organism/*.yml']
thirds :
js : [ 'bower_components/jquery/dist/jquery.min.js'
'bower_components/hope/hope.js'
'bower_components/atoms/atoms.standalone.js'
'bower_components/atoms/atoms.app.js'
'bower_components/moment/min/moment.min.js'
'bower_components/wysihtml5/dist/wysihtml5-0.3.0.min.js']
css : [ 'bower_components/flexo/dist/flexo.layout.css'
'bower_components/atoms/atoms.app.css']
banner = [
'/**'
' * <%= pkg.name %> - <%= pkg.description %>'
' * @version v<%= pkg.version %>'
' * @link <%= pkg.homepage %>'
' * @author <%= pkg.author.name %> (<%= pkg.author.site %>)'
' * @license <%= pkg.license %>'
' */'
''].join('\n')
# -- TASKS ---------------------------------------------------------------------
gulp.task 'thirds', ->
gulp.src(store.thirds.js)
.pipe(concat(pkg.name + '.dependencies.js'))
.pipe(gulp.dest(assets))
gulp.src(store.thirds.css)
.pipe(concat(pkg.name + '.dependencies.css'))
.pipe(gulp.dest(assets))
gulp.src(admin.thirds.js)
.pipe(concat(pkg.name + '.admin.dependencies.js'))
.pipe(gulp.dest(assets))
gulp.src(admin.thirds.css)
.pipe(concat(pkg.name + '.admin.dependencies.css'))
.pipe(gulp.dest(assets))
gulp.task 'coffee', ->
gulp.src(store.coffee)
.pipe(concat(pkg.name + '.coffee'))
.pipe(coffee().on('error', gutil.log))
.pipe(uglify({mangle: false}))
.pipe(header(banner, {pkg: pkg}))
.pipe(gulp.dest(assets))
gulp.src(admin.coffee)
.pipe(concat(pkg.name + '.admin.coffee'))
.pipe(coffee().on('error', gutil.log))
.pipe(uglify({mangle: false}))
.pipe(header(banner, {pkg: pkg}))
.pipe(gulp.dest(assets))
gulp.task 'styl', ->
gulp.src(store.styl)
.pipe(concat(pkg.name + '.theme.default.styl'))
.pipe(stylus({compress: true, errors: true}))
.pipe(header(banner, {pkg: pkg}))
.pipe(gulp.dest(assets))
gulp.src(admin.styl)
.pipe(concat(pkg.name + '.admin.styl'))
.pipe(stylus({compress: true, errors: true}))
.pipe(header(banner, {pkg: pkg}))
.pipe(gulp.dest(assets))
gulp.task 'yml', ->
gulp.src(admin.yml)
.pipe(yml().on('error', gutil.log))
.pipe(gulp.dest(assets + '/scaffold'))
gulp.task 'init', ->
gulp.run(['thirds', 'coffee', 'styl', 'yml'])
gulp.task 'default', ->
gulp.watch(source.coffee, ['coffee'])
gulp.watch(source.styl, ['styl'])
gulp.watch(source.yml, ['yml'])