| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| 'use strict'; |
| |
| module.exports = function (grunt) { |
| |
| // Project configuration. |
| grunt.config.init({ |
| buildEnv: grunt.option('buildEnv') || 'prod', |
| buildNumber: grunt.option('buildNumber') || '0', |
| pkg: grunt.file.readJSON('package.json'), |
| config: grunt.file.readJSON('grunt.json'), |
| bump: { |
| options: { |
| files: '<%= config.bump.options.files %>', |
| commit: true, |
| commitFiles: '<%= config.bump.options.commitFiles %>', |
| commitMessage: 'Release v%VERSION%', |
| createTag: false, |
| tagName: 'v%VERSION%', |
| tagMessage: 'Version %VERSION%', |
| push: false |
| } |
| }, |
| changelog: { |
| options: { |
| dest: 'CHANGELOG.md', |
| prepend: true |
| } |
| }, |
| clean: { |
| build: ['dist/', 'tmp/'], |
| tmp: ['tmp/'] |
| }, |
| concat: { |
| app: { |
| src: [ |
| 'tmp/js/templates.js', |
| 'app/js/**/*.js' |
| ], |
| dest: 'tmp/js/scripts.js' |
| }, |
| components: '<%= config.concat.components %>', |
| css: '<%= config.concat.css %>' |
| }, |
| copy: { |
| tmp: { |
| files: [ |
| { |
| expand: true, |
| cwd: 'app/', |
| src: ['**'], |
| dest: 'tmp/' |
| } |
| ] |
| }, |
| build: { |
| files: [ |
| { |
| expand: true, |
| cwd: 'tmp/', |
| src: ['index.html', 'js/scripts.min.js', 'image/**', 'css/styles.min.css', 'routes.json'], |
| dest: 'dist/', |
| rename: function (desc, src) { |
| return desc + src.replace('min.', 'min.<%= buildNumber %>.') |
| } |
| }, |
| { |
| expand: true, |
| cwd: 'tmp/', |
| src: ['htaccess.dist'], |
| dest: 'dist/', |
| rename: function (dest, src) { |
| console.log(src); |
| if (src == 'htaccess.dist') { |
| return dest + '.htaccess'; |
| } |
| } |
| }, |
| { |
| expand: true, |
| cwd: 'app/components/font-awesome/', |
| src: ['fonts/*'], |
| dest: 'dist/' |
| }, |
| { |
| expand: true, |
| cwd: 'app/components/bootstrap/dist/', |
| src: ['fonts/*'], |
| dest: 'dist/' |
| }, |
| { |
| expand: true, |
| cwd: 'app/components/ace/', |
| src: ['fonts/*'], |
| dest: 'dist/' |
| }, |
| { |
| expand: true, |
| cwd: 'app/components/angular-tree-control/images/', |
| src: ['*'], |
| dest: 'dist/images' |
| }, |
| { |
| expand: true, |
| cwd: 'app/components/chosen/', |
| src: ['*.png'], |
| dest: 'dist/css' |
| }, |
| { |
| expand: true, |
| cwd: 'app/components/angular-ui-grid/', |
| src: ['ui-grid.eot', 'ui-grid.svg', 'ui-grid.ttf', 'ui-grid.woff'], |
| dest: 'dist/css' |
| }, |
| { |
| expand: true, |
| cwd: 'app/components/ace-builds/', |
| src: ['src-min-noconflict/worker-json.js'], |
| flatten: true, |
| dest: 'dist/' |
| } |
| ] |
| } |
| }, |
| html2js: { |
| partials: { |
| src: ['app/partials/**/*.html'], |
| dest: 'tmp/js/templates.js', |
| module: 'templates', |
| options: { |
| base: 'app/' |
| } |
| } |
| }, |
| htmlrefs: { |
| dist: { |
| src: 'tmp/index.html', |
| dest: 'tmp/' |
| }, |
| options: { |
| buildNumber: '<%= buildNumber %>' |
| } |
| }, |
| jshint: { |
| files: ['app/js/**/*.js', '!app/components/**'], |
| options: { |
| jshintrc: '.jshintrc' |
| } |
| }, |
| less: { |
| prod: { |
| options: { |
| compress: true, |
| yuicompress: true |
| }, |
| files: { |
| 'tmp/css/styles.css': 'tmp/less/build.less' |
| } |
| } |
| }, |
| lesslint: { |
| src: ['app/less/**.less'] |
| }, |
| manifest: { |
| build: { |
| options: { |
| basePath: 'dist/', |
| timestamp: true |
| }, |
| src: ['**/**.**'], |
| dest: 'dist/manifest.appcache' |
| } |
| }, |
| 'regex-replace': { |
| strict: { |
| src: ['tmp/js/scripts.js'], |
| actions: [ |
| { |
| name: 'use strict', |
| search: '\\\'use strict\\\';', |
| replace: '', |
| flags: 'gmi' |
| } |
| ] |
| }, |
| manifest: { |
| src: ['tmp/index.html'], |
| actions: [ |
| { |
| name: 'manifest', |
| search: '<html>', |
| replace: '<html manifest="manifest.appcache">' |
| } |
| ] |
| }, |
| templates: { |
| src: ['tmp/js/scripts.js'], |
| actions: [ |
| { |
| name: 'templates', |
| search: /kylin\', \[/, |
| replace: 'kylin\', [\'templates\',', |
| flags: 'gmi' |
| } |
| ] |
| } |
| }, |
| uglify: { |
| app: { |
| options: { |
| mangle: false |
| }, |
| files: { |
| 'tmp/js/scripts.js': 'tmp/js/scripts.js' |
| } |
| } |
| }, |
| karma: { |
| unit: { |
| configFile: 'karma.unit.conf.js' |
| }, |
| e2e: { |
| configFile: 'karma.e2e.conf.js' |
| } |
| } |
| }); |
| |
| // Additional task plugins |
| grunt.loadNpmTasks('grunt-contrib'); |
| grunt.loadNpmTasks('grunt-conventional-changelog'); |
| grunt.loadNpmTasks('grunt-bump'); |
| grunt.loadNpmTasks('grunt-html2js'); |
| grunt.loadNpmTasks('grunt-htmlrefs'); |
| grunt.loadNpmTasks('grunt-lesslint'); |
| grunt.loadNpmTasks('grunt-manifest'); |
| grunt.loadNpmTasks('grunt-regex-replace'); |
| grunt.loadNpmTasks('grunt-karma'); |
| |
| grunt.registerTask('test', ['jshint', 'lesslint']); |
| |
| grunt.registerTask('prod', [ |
| // 'test', |
| 'clean:build', |
| 'copy:tmp', |
| 'html2js', |
| 'concat:app', |
| 'regex-replace:strict', |
| 'regex-replace:templates', |
| 'uglify', |
| 'regex-replace:manifest', |
| 'concat:components', |
| 'less', |
| 'concat:css', |
| 'htmlrefs', |
| 'copy:build', |
| 'clean:tmp', |
| 'manifest', |
| 'changelog' |
| ]); |
| |
| grunt.registerTask('dev', [ |
| // 'test', |
| 'clean:build', |
| 'copy:tmp', |
| 'html2js', |
| 'concat:app', |
| 'regex-replace:strict', |
| 'regex-replace:templates', |
| // 'uglify', |
| 'regex-replace:manifest', |
| 'concat:components', |
| 'less', |
| 'concat:css', |
| 'htmlrefs', |
| 'copy:build', |
| 'clean:tmp', |
| 'manifest', |
| 'changelog' |
| ]); |
| }; |