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