/*jshint node: true */ 'use strict'; module.exports = function(grunt) { grunt.initConfig({ pkg: grunt.file.readJSON("package.json"), less: { development: { files: { "rainloop/v/<%= pkg.version %>/static/css/less.css": "dev/Styles/@Main.less" } } }, jshint: { files: [ 'Gruntfile.js', 'rainloop/v/<%= pkg.version %>/static/js/app.js', 'rainloop/v/<%= pkg.version %>/static/js/admin.js' ], options: { boss: true, browser: true, curly: true, eqeqeq: true, eqnull: true, expr: true, evil: true, newcap: true, noarg: true, undef: true, smarttabs: true, sub: true, globals: { define: true, window: true, jQuery: true, ko: true, console: true, moment: true, crossroads: true, hasher: true, Jua: true, _: true, Dropbox: true } } }, uglify: { options: { compress: true, mangle: true, preserveComments: "some" }, cookie: { options: { banner: "/*! jquery.cookie v1.4.0 (c) 2013 Klaus Hartl | MIT */\n", preserveComments: "false" }, src: "vendors/jquery-cookie/jquery.cookie.js", dest: "vendors/jquery-cookie/jquery.cookie-1.4.0.min.js" }, wakeup: { options: { banner: "/*! jQuery WakeUp plugin (c) 2013 Paul Okopny | MIT */\n", preserveComments: "false" }, src: "vendors/jquery-wakeup/jquery.wakeup.js", dest: "vendors/jquery-wakeup/jquery.wakeup.min.js" }, mousewheel: { options: { banner: "/*! jquery.mousewheel v3.1.4 (c) 2013 Brandon Aaron (http://brandon.aaron.sh) | MIT */\n", preserveComments: "false" }, src: "vendors/jquery-mousewheel/jquery.mousewheel.js", dest: "vendors/jquery-mousewheel/jquery.mousewheel-3.1.4.min.js" }, nano: { options: { banner: "/*! nanoScrollerJS v0.7 (c) 2013 James Florentino; modified by RainLoop Team | MIT */\n", preserveComments: "false" }, src: "vendors/jquery-nanoscroller/jquery.nanoscroller.js", dest: "vendors/jquery-nanoscroller/jquery.nanoscroller-0.7.min.js" }, pace: { src: "vendors/simple-pace/simple-pace.js", dest: "vendors/simple-pace/simple-pace-1.0.min.js" }, rl: { src: "vendors/rl/rl.js", dest: "vendors/rl/rl-1.0.min.js" }, min_app: { src: "rainloop/v/<%= pkg.version %>/static/js/app.js", dest: "rainloop/v/<%= pkg.version %>/static/js/app.min.js" }, min_admin: { src: "rainloop/v/<%= pkg.version %>/static/js/admin.js", dest: "rainloop/v/<%= pkg.version %>/static/js/admin.min.js" } }, concat: { js_index: { nonull: true, src: [ "vendors/json2.min.js", "vendors/simple-pace/simple-pace-1.0.min.js", "vendors/rl/rl-1.0.min.js" ], dest: "rainloop/v/<%= pkg.version %>/static/js/boot.js" }, js_libs: { nonull: true, options: { separator: "\n\n" }, src: [ "vendors/modernizr.js", "vendors/underscore/underscore-1.5.2.min.js", "vendors/jquery-1.10.1.min.js", "vendors/jquery-ui/js/jquery-ui-1.10.3.custom.min.js", "vendors/jquery-cookie/jquery.cookie-1.4.0.min.js", "vendors/jquery-mousewheel/jquery.mousewheel-3.1.4.min.js", "vendors/jquery-scrollstop/jquery.scrollstop.min.js", "vendors/jquery-lazyload/jquery.lazyload.min.js", "vendors/jquery-nanoscroller/jquery.nanoscroller-0.7.min.js", "vendors/jquery-wakeup/jquery.wakeup.min.js", "vendors/moment/min/moment.min.js ", "vendors/routes/signals.min.js", "vendors/routes/hasher.min.js", "vendors/routes/crossroads.min.js", "vendors/knockout/knockout-3.0.0.js", "vendors/jua/jua.min.js", "vendors/select2-3.4.5/select2.min.js", "vendors/jquery-magnific-popup/jquery.magnific-popup.min.js", "vendors/bootstrap/js/bootstrap.min.js", "dev/Common/_LibsEnd.js" ], dest: "rainloop/v/<%= pkg.version %>/static/js/libs.js" }, js_admin: { nonull: true, options: { stripBanners: true, banner: "/*! RainLoop Admin Module (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */\n" + "(function (window, $, ko, crossroads, hasher, _) {\n", footer: "\n\n}(window, jQuery, ko, crossroads, hasher, _));" }, src: [ "dev/Common/_Begin.js", "dev/Common/_BeginA.js", "dev/Common/Globals.js", "dev/Common/Constants.js", "dev/Common/Enums.js", "dev/Common/Utils.js", "dev/Common/Base64.js", "dev/Common/Knockout.js", "dev/Common/LinkBuilder.js", "dev/Common/Plugins.js", "dev/Storages/LocalStorages/CookieDriver.js", "dev/Storages/LocalStorages/LocalStorageDriver.js", "dev/Storages/LocalStorage.js", "dev/Knoin/AbstractBoot.js", "dev/Knoin/AbstractViewModel.js", "dev/Knoin/AbstractScreen.js", "dev/Knoin/Knoin.js", "dev/Models/EmailModel.js", "dev/ViewModels/PopupsDomainViewModel.js", "dev/ViewModels/PopupsPluginViewModel.js", "dev/ViewModels/PopupsActivateViewModel.js", "dev/ViewModels/PopupsLanguagesViewModel.js", "dev/ViewModels/AdminLoginViewModel.js", "dev/ViewModels/AdminMenuViewModel.js", "dev/ViewModels/AdminPaneViewModel.js", "dev/Admin/General.js", "dev/Admin/Login.js", "dev/Admin/Domains.js", "dev/Admin/Security.js", "dev/Admin/Social.js", "dev/Admin/Plugins.js", "dev/Admin/Packages.js", "dev/Admin/Licensing.js", "dev/Storages/AbstractData.js", "dev/Storages/AdminData.js", "dev/Storages/AbstractAjaxRemote.js", "dev/Storages/AdminAjaxRemote.js", "dev/Storages/AbstractCache.js", "dev/Storages/AdminCache.js", "dev/Screens/AbstractSettings.js", "dev/Screens/AdminLogin.js", "dev/Screens/AdminSettings.js", "dev/Boots/AbstractApp.js", "dev/Boots/AdminApp.js", "dev/Common/_End.js", "dev/Common/_CoreEnd.js" ], dest: "rainloop/v/<%= pkg.version %>/static/js/admin.js" }, js_app: { nonull: true, options: { stripBanners: true, banner: "/*! RainLoop Webmail Module (c) RainLoop Team | Licensed under CC BY-NC-SA 3.0 */\n" + "(function (window, $, ko, crossroads, hasher, moment, Jua, _) {\n", footer: "\n\n}(window, jQuery, ko, crossroads, hasher, moment, Jua, _));" }, src: [ "dev/Common/_Begin.js", "dev/Common/_BeginW.js", "dev/Common/Globals.js", "dev/Common/Constants.js", "dev/Common/Enums.js", "dev/Common/Utils.js", "dev/Common/Base64.js", "dev/Common/Knockout.js", "dev/Common/LinkBuilder.js", "dev/Common/Plugins.js", "dev/Common/HtmlEditor.js", "dev/Common/Selector.js", "dev/Storages/LocalStorages/CookieDriver.js", "dev/Storages/LocalStorages/LocalStorageDriver.js", "dev/Storages/LocalStorage.js", "dev/Knoin/AbstractBoot.js", "dev/Knoin/AbstractViewModel.js", "dev/Knoin/AbstractScreen.js", "dev/Knoin/Knoin.js", "dev/Models/EmailModel.js", "dev/Models/ContactModel.js", "dev/Models/AttachmentModel.js", "dev/Models/ComposeAttachmentModel.js", "dev/Models/MessageModel.js", "dev/Models/FolderModel.js", "dev/Models/AccountModel.js", "dev/Models/IdentityModel.js", "dev/ViewModels/PopupsFolderClearViewModel.js", "dev/ViewModels/PopupsFolderCreateViewModel.js", "dev/ViewModels/PopupsFolderSystemViewModel.js", "dev/ViewModels/PopupsComposeViewModel.js", "dev/ViewModels/PopupsContactsViewModel.js", "dev/ViewModels/PopupsAdvancedSearchViewModel.js", "dev/ViewModels/PopupsAddAccountViewModel.js", "dev/ViewModels/PopupsIdentityViewModel.js", "dev/ViewModels/PopupsLanguagesViewModel.js", "dev/ViewModels/LoginViewModel.js", "dev/ViewModels/AbstractSystemDropDownViewModel.js", "dev/ViewModels/MailBoxSystemDropDownViewModel.js", "dev/ViewModels/SettingsSystemDropDownViewModel.js", "dev/ViewModels/MailBoxFolderListViewModel.js", "dev/ViewModels/MailBoxMessageListViewModel.js", "dev/ViewModels/MailBoxMessageViewViewModel.js", "dev/ViewModels/SettingsMenuViewModel.js", "dev/ViewModels/SettingsPaneViewModel.js", "dev/Settings/General.js", "dev/Settings/Personal.js", "dev/Settings/Accounts.js", "dev/Settings/Identities.js", "dev/Settings/Social.js", "dev/Settings/ChangePassword.js", "dev/Settings/Folders.js", "dev/Settings/Themes.js", "dev/Storages/AbstractData.js", "dev/Storages/WebMailData.js", "dev/Storages/AbstractAjaxRemote.js", "dev/Storages/WebMailAjaxRemote.js", "dev/Storages/AbstractCache.js", "dev/Storages/WebMailCache.js", "dev/Screens/AbstractSettings.js", "dev/Screens/Login.js", "dev/Screens/MailBox.js", "dev/Screens/Settings.js", "dev/Boots/AbstractApp.js", "dev/Boots/RainLoopApp.js", "dev/Common/_End.js", "dev/Common/_CoreEnd.js" ], dest: "rainloop/v/<%= pkg.version %>/static/js/app.js" }, css: { nonull: true, src: [ "vendors/jquery-ui/css/no-theme/jquery-ui-1.10.3.custom.css", "vendors/normalize/normalize.css", "vendors/icomoon/style.css", "vendors/select2-3.4.5/select2.css", "vendors/select2-3.4.5/select2-bootstrap.css", "vendors/jquery-nanoscroller/nanoscroller.css", "vendors/jquery-magnific-popup/magnific-popup.css", "vendors/jquery-magnific-popup/magnific-popup-animations.css", "vendors/simple-pace/styles.css", "vendors/flags/flags-fixed.css", "rainloop/v/<%= pkg.version %>/static/css/less.css" ], dest: "rainloop/v/<%= pkg.version %>/static/css/app.css" } }, cssmin: { css: { src: "rainloop/v/<%= pkg.version %>/static/css/app.css", dest: "rainloop/v/<%= pkg.version %>/static/css/app.min.css" } }, watch: { js: { options: { nospawn: true }, files: ["dev/**/*.js"], tasks: ["concat:js_libs", "concat:js_admin", "concat:js_app"] }, styles: { options: { nospawn: true }, files: ["dev/Styles/*.less"], tasks: ["less", "concat:css"] } } }); // dependencies for (var key in grunt.file.readJSON('package.json').devDependencies) { if (key !== 'grunt' && key.indexOf('grunt') === 0) { grunt.loadNpmTasks(key); } } // uglify grunt.registerTask('mousewheel', ['uglify:mousewheel']); grunt.registerTask('wakeup', ['uglify:wakeup']); grunt.registerTask('nano', ['uglify:nano']); grunt.registerTask('pace', ['uglify:pace']); grunt.registerTask('rl', ['uglify:rl']); grunt.registerTask('cookie', ['uglify:cookie']); grunt.registerTask('rainloop', ['uglify:min_app', 'uglify:min_admin']); // --- grunt.registerTask('default', ['less', 'concat', 'jshint', 'cssmin', 'rainloop']); // aliases grunt.registerTask('ant', ['default']); // special for ant task grunt.registerTask('u', ['uglify']); grunt.registerTask('h', ['jshint']); grunt.registerTask('w', ['watch']); };