2424module . exports = function ( grunt ) {
2525 'use strict' ;
2626
27+ // load dependencies
28+ require ( 'load-grunt-tasks' ) ( grunt , { pattern : [ 'grunt-contrib-*' , 'grunt-targethtml' , 'grunt-usemin' ] } ) ;
29+ grunt . loadTasks ( 'tasks' ) ;
30+
2731 var common = require ( "./tasks/lib/common" ) ( grunt ) ;
2832
2933 // Project configuration.
3034 grunt . initConfig ( {
3135 pkg : grunt . file . readJSON ( "package.json" ) ,
36+ clean : {
37+ dist : {
38+ files : [ {
39+ dot : true ,
40+ src : [
41+ 'dist' ,
42+ 'src/.index.html' ,
43+ 'src/styles/brackets.css'
44+ ]
45+ } ]
46+ }
47+ } ,
48+ copy : {
49+ dist : {
50+ files : [
51+ {
52+ 'dist/index.html' : 'src/.index.html'
53+ } ,
54+ /* static files */
55+ {
56+ expand : true ,
57+ dest : 'dist/' ,
58+ cwd : 'src/' ,
59+ src : [
60+ 'nls/{,*/}*.js' ,
61+ 'xorigin.js' ,
62+ 'dependencies.js' ,
63+ 'thirdparty/requirejs/require.js' ,
64+ 'LiveDevelopment/launch.html'
65+ ]
66+ } ,
67+ /* extensions and CodeMirror modes */
68+ {
69+ expand : true ,
70+ dest : 'dist/' ,
71+ cwd : 'src/' ,
72+ src : [
73+ 'extensibility/**/*' ,
74+ '!extensions/default/*/unittest-files/**/*' ,
75+ '!extensions/default/*/unittests.js' ,
76+ 'extensions/default/*/**/*' ,
77+ 'thirdparty/CodeMirror2/addon/{,*/}*' ,
78+ 'thirdparty/CodeMirror2/keymap/{,*/}*' ,
79+ 'thirdparty/CodeMirror2/lib/{,*/}*' ,
80+ 'thirdparty/CodeMirror2/mode/{,*/}*' ,
81+ 'thirdparty/CodeMirror2/theme/{,*/}*' ,
82+ 'thirdparty/i18n/*.js' ,
83+ 'thirdparty/text/*.js'
84+ ]
85+ } ,
86+ /* styles, fonts and images */
87+ {
88+ expand : true ,
89+ dest : 'dist/styles' ,
90+ cwd : 'src/styles' ,
91+ src : [ 'jsTreeTheme.css' , 'fonts/{,*/}*.*' , 'images/*' , 'brackets.min.css*' ]
92+ }
93+ ]
94+ }
95+ } ,
96+ less : {
97+ dist : {
98+ files : {
99+ "src/styles/brackets.min.css" : "src/styles/brackets.less"
100+ } ,
101+ options : {
102+ compress : true ,
103+ sourceMap : true ,
104+ sourceMapFilename : 'src/styles/brackets.min.css.map' ,
105+ outputSourceFiles : true ,
106+ sourceMapRootpath : '' ,
107+ sourceMapBasepath : 'src/styles'
108+ }
109+ }
110+ } ,
111+ requirejs : {
112+ dist : {
113+ // Options: https://github.com/jrburke/r.js/blob/master/build/example.build.js
114+ options : {
115+ // `name` and `out` is set by grunt-usemin
116+ baseUrl : 'src' ,
117+ optimize : 'uglify2' ,
118+ // TODO: Figure out how to make sourcemaps work with grunt-usemin
119+ // https://github.com/yeoman/grunt-usemin/issues/30
120+ generateSourceMaps : true ,
121+ useSourceUrl : true ,
122+ // required to support SourceMaps
123+ // http://requirejs.org/docs/errors.html#sourcemapcomments
124+ preserveLicenseComments : false ,
125+ useStrict : true ,
126+ // Disable closure, we want define/require to be globals
127+ wrap : false ,
128+ exclude : [ "text!config.json" ] ,
129+ uglify2 : { } // https://github.com/mishoo/UglifyJS2
130+ }
131+ }
132+ } ,
133+ targethtml : {
134+ dist : {
135+ files : {
136+ 'src/.index.html' : 'src/index.html'
137+ }
138+ }
139+ } ,
140+ useminPrepare : {
141+ options : {
142+ dest : 'dist'
143+ } ,
144+ html : 'src/.index.html'
145+ } ,
146+ usemin : {
147+ options : {
148+ dirs : [ 'dist' ]
149+ } ,
150+ html : [ 'dist/{,*/}*.html' ]
151+ } ,
152+ htmlmin : {
153+ dist : {
154+ options : {
155+ /*removeCommentsFromCDATA: true,
156+ // https://github.com/yeoman/grunt-usemin/issues/44
157+ //collapseWhitespace: true,
158+ collapseBooleanAttributes: true,
159+ removeAttributeQuotes: true,
160+ removeRedundantAttributes: true,
161+ useShortDoctype: true,
162+ removeEmptyAttributes: true,
163+ removeOptionalTags: true*/
164+ } ,
165+ files : [ {
166+ expand : true ,
167+ cwd : 'src' ,
168+ src : '*.html' ,
169+ dest : 'dist'
170+ } ]
171+ }
172+ } ,
32173 meta : {
33174 src : [
34175 'src/**/*.js' ,
@@ -144,16 +285,9 @@ module.exports = function (grunt) {
144285 linux : "<%= shell.repo %>/installer/linux/debian/package-root/opt/brackets/brackets"
145286 }
146287 } ) ;
147-
148- // load dependencies
149- grunt . loadTasks ( 'tasks' ) ;
150- grunt . loadNpmTasks ( 'grunt-contrib-jasmine' ) ;
151- grunt . loadNpmTasks ( 'grunt-contrib-jshint' ) ;
152- grunt . loadNpmTasks ( 'grunt-contrib-watch' ) ;
153- grunt . loadNpmTasks ( 'grunt-jasmine-node' ) ;
154288
155289 // task: install
156- grunt . registerTask ( 'install' , [ 'write-config' ] ) ;
290+ grunt . registerTask ( 'install' , [ 'write-config' , 'less' ] ) ;
157291
158292 // task: test
159293 grunt . registerTask ( 'test' , [ 'jshint:all' , 'jasmine' ] ) ;
@@ -163,6 +297,24 @@ module.exports = function (grunt) {
163297 // Update sprint number in package.json and rewrite src/config.json
164298 grunt . registerTask ( 'set-sprint' , [ 'update-sprint-number' , 'write-config' ] ) ;
165299
300+ // task: build
301+ grunt . registerTask ( 'build' , [
302+ 'jshint:src' ,
303+ 'jasmine' ,
304+ 'clean' ,
305+ 'less' ,
306+ 'targethtml' ,
307+ 'useminPrepare' ,
308+ 'htmlmin' ,
309+ 'requirejs' ,
310+ 'concat' ,
311+ /*'cssmin',*/
312+ /*'uglify',*/
313+ 'copy' ,
314+ 'usemin' ,
315+ 'build-config'
316+ ] ) ;
317+
166318 // Default task.
167319 grunt . registerTask ( 'default' , [ 'test' ] ) ;
168320} ;
0 commit comments