]> git.immae.eu Git - github/wallabag/wallabag.git/blame - Gruntfile.js
Basically, fix everything
[github/wallabag/wallabag.git] / Gruntfile.js
CommitLineData
5ecdfcd0
TC
1module.exports = function (grunt) {
2 require('load-grunt-tasks')(grunt);
3
4 grunt.initConfig({
5 appDir: 'app/Resources/static',
a494c33e 6 buildDir: 'app/Resources/build',
0471e905 7 modulesDir: 'node_modules',
a494c33e 8 releaseDir: 'web/bundles/wallabagcore',
5ecdfcd0
TC
9
10 postcss: {
11 material: {
12 options: {
13 map: {
0743287f 14 inline: false,
5ecdfcd0
TC
15 },
16
17 processors: [
18 require('pixrem')(),
0743287f
TC
19 require('autoprefixer')({ browsers: 'last 2 versions' }),
20 require('cssnano')(),
21 ],
5ecdfcd0
TC
22 },
23 src: '<%= buildDir %>/material.css',
a494c33e 24 dest: '<%= releaseDir %>/themes/material/css/style.min.css',
5ecdfcd0
TC
25 },
26 baggy: {
27 options: {
28 map: {
0743287f 29 inline: false,
5ecdfcd0
TC
30 },
31
32 processors: [
33 require('pixrem')(),
0743287f
TC
34 require('autoprefixer')({ browsers: 'last 2 versions' }),
35 require('cssnano')(),
36 ],
5ecdfcd0
TC
37 },
38 src: '<%= buildDir %>/baggy.css',
a494c33e 39 dest: '<%= releaseDir %>/themes/baggy/css/style.min.css',
0743287f 40 },
5ecdfcd0
TC
41 },
42 concat: {
43 options: {
0743287f 44 separator: ';',
5ecdfcd0 45 },
5ecdfcd0
TC
46 cssMaterial: {
47 src: [
48 'node_modules/materialize-css/bin/materialize.css',
0743287f 49 '<%= appDir %>/themes/material/css/*.css',
5ecdfcd0 50 ],
0743287f 51 dest: '<%= buildDir %>/material.css',
5ecdfcd0
TC
52 },
53 cssBaggy: {
54 src: [
0743287f 55 '<%= appDir %>/themes/baggy/css/*.css',
5ecdfcd0 56 ],
0743287f
TC
57 dest: '<%= buildDir %>/baggy.css',
58 },
5ecdfcd0
TC
59 },
60 browserify: {
c146f694
TC
61 dist: {
62 files: {
63 '<%= buildDir %>/material.browser.js': ['<%= appDir %>/themes/material/js/init.js'],
64 '<%= buildDir %>/baggy.browser.js': ['<%= appDir %>/themes/baggy/js/init.js']
65 }
66 },
67 options: {
68 sourceType: "module",
69 transform: [
70 ["babelify", {
71 presets: ["es2015"]
8f234d01
TC
72 }], ["browserify-shim", {
73 "jquery": {
74 "exports": "$"
75 },
76 "materialize": "materialize",
77 "jquery-ui": {
78 "depends": "jquery",
79 "exports": null
80 }
81 }]
c146f694
TC
82 ],
83 browserifyOptions: {
84 browser: {
85 "jQuery": "./node_modules/jquery/dist/jquery.js",
8f234d01
TC
86 "jquery.tinydot": "./node_modules/jquery.tinydot/src/jquery.tinydot.js",
87 "jquery.ui": "./node_modules/jquery-ui-browserify/dist/jquery-ui.js"
c146f694
TC
88 }
89 }
90 }
91
5ecdfcd0
TC
92 },
93 uglify: {
94 material: {
95 files: {
a494c33e 96 '<%= releaseDir %>/themes/material/js/material.min.js':
0743287f 97 ['<%= buildDir %>/material.browser.js'],
5ecdfcd0
TC
98 },
99 options: {
100 sourceMap: true,
101 },
102 },
103 baggy: {
104 files: {
a494c33e 105 '<%= releaseDir %>/themes/baggy/js/baggy.min.js':
0743287f 106 ['<%= buildDir %>/baggy.browser.js'],
5ecdfcd0
TC
107 },
108 options: {
109 sourceMap: true,
110 },
111 },
112 },
113 copy: {
114 pickerjs: {
115 expand: true,
0471e905 116 cwd: '<%= modulesDir %>/pickadate/lib',
5ecdfcd0 117 src: 'picker.js',
0743287f 118 dest: '<%= buildDir %>',
5ecdfcd0
TC
119 },
120 annotator: {
121 expand: true,
0471e905 122 cwd: '<%= modulesDir %>/annotator/pkg',
5ecdfcd0 123 src: 'annotator.min.js',
0743287f
TC
124 dest: '<%= buildDir %>/themes/_global/js/',
125 },
5ecdfcd0
TC
126 },
127 symlink: {
128 baggyfonts: {
129 files: [
130 {
131 expand: true,
132 overwrite: true,
0471e905
TC
133 cwd: '<%= modulesDir %>/icomoon-free-npm/Font',
134 src: 'IcoMoon-Free.ttf',
a494c33e 135 dest: '<%= releaseDir %>/themes/baggy/fonts/',
0471e905
TC
136 },
137 {
138 expand: true,
139 overwrite: true,
140 cwd: '<%= modulesDir %>/ptsans-npm-webfont/fonts',
a494c33e
TC
141 src: 'ptsansbold.woff',
142 dest: '<%= releaseDir %>/themes/baggy/fonts/',
5ecdfcd0
TC
143 },
144 {
145 expand: true,
146 overwrite: true,
0471e905 147 cwd: '<%= modulesDir %>/material-design-icons-iconfont/dist/fonts/',
a494c33e
TC
148 src: ['MaterialIcons-Regular.eot', 'MaterialIcons-Regular.woff2', 'MaterialIcons-Regular.woff', 'MaterialIcons-Regular.ttf'],
149 dest: '<%= releaseDir %>/themes/baggy/fonts/',
0743287f
TC
150 },
151 ],
5ecdfcd0
TC
152 },
153 materialfonts: {
154 files: [
155 {
156 expand: true,
157 overwrite: true,
0471e905
TC
158 cwd: '<%= modulesDir %>/icomoon-free-npm/Font',
159 src: 'IcoMoon-Free.ttf',
a494c33e 160 dest: '<%= releaseDir %>/themes/material/fonts',
5ecdfcd0
TC
161 },
162 {
163 expand: true,
164 overwrite: true,
0471e905 165 cwd: '<%= modulesDir %>/roboto-fontface/fonts/Roboto',
0743287f 166 src: '*',
a494c33e 167 dest: '<%= releaseDir %>/themes/material/font/roboto',
5ecdfcd0
TC
168 },
169 {
170 expand: true,
171 overwrite: true,
0471e905 172 cwd: '<%= modulesDir %>/material-design-icons-iconfont/dist/fonts/',
a494c33e
TC
173 src: ['MaterialIcons-Regular.eot', 'MaterialIcons-Regular.woff2', 'MaterialIcons-Regular.woff', 'MaterialIcons-Regular.ttf'],
174 dest: '<%= releaseDir %>/themes/material/fonts/',
0743287f
TC
175 },
176 ],
5ecdfcd0
TC
177 },
178 pics: {
179 files: [
180 {
181 expand: true,
182 overwrite: true,
183 cwd: '<%= appDir %>/themes/_global/',
184 src: 'img',
a494c33e 185 dest: '<%= releaseDir %>/themes/_global/',
0743287f
TC
186 },
187 ],
188 },
5ecdfcd0
TC
189 },
190 clean: {
191 css: {
0743287f 192 src: ['<%= buildDir %>/**/*.css'],
5ecdfcd0
TC
193 },
194 js: {
0743287f 195 src: ['<%= buildDir %>/**/*.js', '<%= buildDir %>/**/*.map'],
5ecdfcd0
TC
196 },
197 all: {
0743287f
TC
198 src: ['./<%= buildDir %>'],
199 },
a494c33e
TC
200 release: {
201 src: ['./<%= releaseDir %>/*'],
202 }
0743287f 203 },
5ecdfcd0
TC
204 });
205
206 grunt.registerTask(
207 'fonts',
208 'Install fonts',
209 ['symlink:baggyfonts', 'symlink:materialfonts']
210 );
211
212 grunt.registerTask(
213 'js',
214 'Build and install js files',
c146f694 215 ['clean:js', 'copy:pickerjs', 'browserify', 'uglify']
5ecdfcd0
TC
216 );
217
218 grunt.registerTask(
219 'default',
220 'Build and install everything',
221 ['clean', 'copy:pickerjs', 'concat', 'browserify', 'uglify', 'postcss', 'symlink']
222 );
223
224 grunt.registerTask(
225 'css',
226 'Compiles the stylesheets.',
227 ['clean:css', 'concat:cssMaterial', 'concat:cssBaggy', 'postcss']
228 );
0743287f 229};