aboutsummaryrefslogtreecommitdiffstats
path: root/Gruntfile.js
diff options
context:
space:
mode:
Diffstat (limited to 'Gruntfile.js')
-rw-r--r--Gruntfile.js644
1 files changed, 644 insertions, 0 deletions
diff --git a/Gruntfile.js b/Gruntfile.js
new file mode 100644
index 0000000..d9d90d8
--- /dev/null
+++ b/Gruntfile.js
@@ -0,0 +1,644 @@
+// Generated on 2016-05-30 using generator-angular 0.15.1
+'use strict';
+
+// # Globbing for performance reasons we're only matching one level down:
+// 'test/spec/{,*/}*.js' use this if you want to recursively match all
+// subfolders: 'test/spec/**/*.js'
+
+module.exports = function (grunt) {
+
+ // Time how long tasks take. Can help when optimizing build times
+ require('time-grunt')(grunt);
+
+ // Automatically load required Grunt tasks
+ require('jit-grunt')(grunt, {
+ useminPrepare: 'grunt-usemin',
+ ngtemplates: 'grunt-angular-templates',
+ cdnify: 'grunt-google-cdn',
+ ngconstant: 'grunt-ng-constant',
+ mkdir: 'grunt-mkdir',
+ preprocess: 'grunt-preprocess'
+ });
+
+ // Configurable paths for the application
+ var appConfig = {
+ app: require('./bower.json').appPath || 'app',
+ tmp: {
+ exploded: '.tmp',
+ imploded: '.tmp_imploded'
+ },
+ dist: {
+ exploded: 'dist/exploded',
+ imploded: 'dist/imploded',
+ war: 'dist/war'
+ }
+ };
+
+ // Define the configuration for all the tasks
+ grunt.initConfig({
+
+ // Project settings
+ yeoman: appConfig,
+
+ // Watches files for changes and runs tasks based on the changed files
+ watch: {
+ bower: {
+ files: ['bower.json'],
+ tasks: ['wiredep']
+ },
+ js: {
+ files: ['<%= yeoman.app %>/main/{,*/}*.js'],
+ tasks: [
+ 'newer:jshint:all', 'newer:jscs:all'
+ ],
+ options: {
+ livereload: '<%= connect.options.livereload %>'
+ }
+ },
+ injector: {
+ files: [
+ 'app/styles/*.less', 'app/core/**/*.less', 'app/main/**/*.less'
+ ],
+ taskd: ['injector']
+ },
+ less: {
+ files: ['app/**/*.less'],
+ tasks: ['less:development'],
+ options: {
+ nospawn: true
+ }
+ },
+ styles: {
+ files: ['<%= yeoman.app %>/main/{,*/}*.css'],
+ tasks: ['newer:copy:styles', 'postcss']
+ },
+ gruntfile: {
+ files: ['Gruntfile.js']
+ },
+ options: {
+ livereload: true
+ },
+ livereload: {
+ options: {
+ livereload: '<%= connect.options.livereload %>'
+ },
+ files: ['<%= yeoman.app %>/{,*/}*.html', '<%= yeoman.app %>/styles/app.css', '<%= yeoman.app %>/styles/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}']
+ }
+ },
+
+ /*
+ concat: {
+ options: {
+ stripBanners: true
+ },
+ exploded: {
+ dest: '<%= yeoman.tmp.exploded %>'
+ }
+ },
+ */
+
+ ngconstant: {
+ // Options for all targets
+ options: {
+ space: ' ',
+ wrap: '"use strict";\n\n {\%= __ngModule %}',
+ name: 'dcaeApp.env'
+ },
+ // Environment targets
+ dev: {
+ options: {
+ dest: '<%= yeoman.app %>/app.env.js'
+ },
+ constants: {
+ ENV: {
+ name: 'development',
+ apiBase: 'http://localhost:8080/',
+ host: 'http://localhost:8446/',
+ catalogImport: '/comp-fe/',
+ catalogPrefix: 'http://localhost:8446',
+ cookieUser: 'ym903w',
+ ruleEditorUrl: 'http://localhost:4200'
+ }
+ }
+ },
+ exploded: {
+ options: {
+ dest: '<%= yeoman.app %>/app.env.js'
+ },
+ constants: {
+ ENV: {
+ name: 'production',
+ apiBase: '/dcae/dcaeProxyOld/',
+ host: '/dcae/dcaeProxyOld/',
+ catalogImport: '/dcae/comp-fe/',
+ catalogPrefix: '/dcae/dcaeProxyOld/',
+ cookieUser: 'le056g',
+ ruleEditorUrl: '/rule_engine'
+ }
+ }
+ }
+ },
+
+ // The actual grunt server settings
+ connect: {
+ options: {
+ port: 9000,
+ // Change this to '0.0.0.0' to access the server from outside.
+ hostname: 'localhost',
+ livereload: true
+ },
+ livereload: {
+ options: {
+ open: true,
+ middleware: function (connect) {
+ return [
+ //connect.static('.tmp'),
+ connect().use('/bower_components', connect.static('./bower_components')),
+ connect().use('/app/styles', connect.static('./app/styles')),
+ connect.static(appConfig.app)
+ ];
+ }
+ }
+ },
+ test: {
+ options: {
+ port: 9001,
+ middleware: function (connect) {
+ return [
+ connect.static('<%= yeoman.tmp.exploded %>'),
+ connect.static('test'),
+ connect().use('/bower_components', connect.static('./bower_components')),
+ connect.static(appConfig.app)
+ ];
+ }
+ }
+ },
+ exploded: {
+ options: {
+ open: true,
+ base: '<%= yeoman.dist.exploded %>'
+ }
+ }
+ },
+
+ // app.less contains all the less from all places, convert it to CSS
+ less: {
+ development: {
+ files: {
+ 'app/styles/app.css': 'app/styles/app.less'
+ }
+ },
+ production: {
+ files: {
+ '<%= yeoman.tmp.exploded %>/styles/app.css': 'app/styles/app.less'
+ }
+ }
+ },
+
+ injector: {
+ options: {},
+ // Inject all project less into app.less
+ less: {
+ options: {
+ transform: function (filePath) {
+ filePath = filePath.replace('/app/styles/', '../styles/');
+ filePath = filePath.replace('/app/main/', '../main/');
+ filePath = filePath.replace('/app/core/', '../core/');
+ return '@import \'' + filePath + '\';';
+ },
+ starttag: '// injector:less',
+ endtag: '// endinjector:less'
+ },
+ files: {
+ 'app/styles/app.less': ['app/styles/*.less', 'app/core/**/*.less', 'app/main/**/*.less', '!app/styles/app.less']
+ }
+ }
+ },
+
+ // Make sure there are no obvious mistakes
+ jshint: {
+ options: {
+ jshintrc: '.jshintrc',
+ reporter: require('jshint-stylish')
+ },
+ all: {
+ src: ['Gruntfile.js', '<%= yeoman.app %>/main/{,*/}*.js']
+ },
+ test: {
+ options: {
+ jshintrc: 'test/.jshintrc'
+ },
+ src: ['test/spec/{,*/}*.js']
+ }
+ },
+
+ // Make sure code styles are up to par
+ jscs: {
+ options: {
+ config: '.jscsrc',
+ verbose: true
+ },
+ all: {
+ src: ['Gruntfile.js', '<%= yeoman.app %>/main/{,*/}*.js']
+ },
+ test: {
+ src: ['test/spec/{,*/}*.js']
+ }
+ },
+
+ // Empties folders to start fresh
+ clean: {
+ exploded: {
+ files: [
+ {
+ dot: true,
+ src: ['<%= yeoman.tmp.exploded %>', '<%= yeoman.dist.exploded %>/{,*/}*', '!<%= yeoman.dist.exploded %>/.git{,*/}*']
+ }
+ ]
+ },
+ imploded: {
+ files: [
+ {
+ dot: true,
+ src: ['<%= yeoman.dist.imploded %>']
+ }
+ ]
+ },
+ html: {
+ files: [
+ {
+ dot: true,
+ src: ['<%= yeoman.dist.exploded %>/index.html']
+ }
+ ]
+ },
+ server: '<%= yeoman.tmp.exploded %>'
+ },
+
+ // Add vendor prefixed styles
+ postcss: {
+ options: {
+ processors: [require('autoprefixer-core')({browsers: ['last 1 version']})]
+ },
+ server: {
+ options: {
+ map: true
+ },
+ files: [
+ {
+ expand: true,
+ cwd: '<%= yeoman.tmp.exploded %>/styles/',
+ src: '{,*/}*.css',
+ dest: '<%= yeoman.tmp.exploded %>/styles/'
+ }
+ ]
+ },
+ exploded: {
+ files: [
+ {
+ expand: true,
+ cwd: '<%= yeoman.tmp.exploded %>/styles/',
+ src: '{,*/}*.css',
+ dest: '<%= yeoman.tmp.exploded %>/styles/'
+ }
+ ]
+ }
+ },
+
+ // Automatically inject Bower components into the app
+ wiredep: {
+ app: {
+ src: ['<%= yeoman.app %>/index.html'],
+ ignorePath: /\.\.\//
+ }
+ },
+
+ // Renames files for browser caching purposes
+ filerev: {
+ exploded: {
+ src: ['<%= yeoman.dist.exploded %>/scripts/{,*/}*.js', '<%= yeoman.dist.exploded %>/styles/{,*/}*.css', '<%= yeoman.dist.exploded %>/styles/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}', '<%= yeoman.dist.exploded %>/styles/fonts/*']
+ }
+ },
+
+ // Reads HTML for usemin blocks to enable smart builds that automatically
+ // concat, minify and revision files. Creates configurations in memory so
+ // additional tasks can operate on them
+ useminPrepare: {
+ html: '<%= yeoman.app %>/index.html',
+ options: {
+ dest: '<%= yeoman.dist.exploded %>',
+ flow: {
+ html: {
+ steps: {
+ js: [
+ 'concat', 'uglifyjs'
+ ],
+ css: ['cssmin']
+ },
+ post: {}
+ }
+ }
+ }
+ },
+
+ // Performs rewrites based on filerev and the useminPrepare configuration
+ usemin: {
+ html: ['<%= yeoman.dist.exploded %>/{,*/}*.html'],
+ css: ['<%= yeoman.dist.exploded %>/styles/{,*/}*.css'],
+ js: ['<%= yeoman.dist.exploded %>/scripts/{,*/}*.js'],
+ options: {
+ assetsDirs: [
+ '<%= yeoman.dist.exploded %>', '<%= yeoman.dist.exploded %>/styles/images', '<%= yeoman.dist.exploded %>/styles'
+ ],
+ patterns: {
+ js: [
+ [/(images\/[^''""]*\.(png|jpg|jpeg|gif|webp|svg))/g, 'Replacing references to images']
+ ]
+ }
+ }
+ },
+
+ imagemin: {
+ exploded: {
+ files: [
+ {
+ expand: true,
+ cwd: '<%= yeoman.app %>/styles/images',
+ src: '**/*.{png,jpg,jpeg,gif}',
+ dest: '<%= yeoman.dist.exploded %>/styles/images'
+ }
+ ]
+ }
+ },
+
+ svgmin: {
+ exploded: {
+ files: [
+ {
+ expand: true,
+ cwd: '<%= yeoman.app %>/styles/images',
+ src: '{,*/}*.svg',
+ dest: '<%= yeoman.dist.exploded %>/styles/images'
+ }
+ ]
+ }
+ },
+
+ htmlmin: {
+ exploded: {
+ options: {
+ collapseWhitespace: true,
+ conservativeCollapse: true,
+ collapseBooleanAttributes: true,
+ removeCommentsFromCDATA: true
+ },
+ files: [
+ {
+ expand: true,
+ cwd: '<%= yeoman.dist.exploded %>',
+ src: ['*.html'],
+ dest: '<%= yeoman.dist.exploded %>'
+ }
+ ]
+ }
+ },
+
+ ngtemplates: {
+ exploded: {
+ options: {
+ module: 'dcaeApp',
+ htmlmin: '<%= htmlmin.exploded.options %>',
+ usemin: 'scripts/scripts.js'
+ },
+ cwd: '<%= yeoman.app %>',
+ src: [
+ 'main/**/*.html', 'core/**/*.html', 'comp-fe/**/*.html'
+ ],
+ dest: '<%= yeoman.tmp.exploded %>/templateCache.js'
+ }
+ },
+
+ // ng-annotate tries to make the code safe for minification automatically by
+ // using the Angular long form for dependency injection.
+ ngAnnotate: {
+ exploded: {
+ files: [
+ {
+ expand: true,
+ cwd: '<%= yeoman.tmp.exploded %>/concat/scripts',
+ src: '*.js',
+ dest: '<%= yeoman.tmp.exploded %>/concat/scripts'
+ }
+ ]
+ }
+ },
+
+ // Replace Google CDN references
+ cdnify: {
+ exploded: {
+ html: ['<%= yeoman.dist.exploded %>/*.html']
+ }
+ },
+
+ // Copies remaining files to places other tasks can use
+ copy: {
+ exploded: {
+ files: [
+ {
+ expand: true,
+ dot: true,
+ cwd: '<%= yeoman.app %>',
+ dest: '<%= yeoman.dist.exploded %>',
+ src: ['*.{ico,png,txt}', '*.html', 'styles/images/{,*/}*.{webp}', 'styles/fonts/{,*/}*.*']
+ }, {
+ expand: true,
+ cwd: '<%= yeoman.tmp.exploded %>/images',
+ dest: '<%= yeoman.dist.exploded %>/styles/images',
+ src: ['generated/*']
+ }, {
+ expand: true,
+ cwd: 'bower_components/bootstrap/dist',
+ src: 'fonts/*',
+ dest: '<%= yeoman.dist.exploded %>'
+ }, {
+ expand: true,
+ cwd: '<%= yeoman.app %>',
+ src: ['WEB-INF/*'],
+ dest: '<%= yeoman.dist.exploded %>/'
+ }, {
+ expand: true,
+ cwd: '<%= yeoman.app %>',
+ src: ['dcae.xml'],
+ dest: '<%= yeoman.dist.exploded %>/'
+ }
+ ]
+ },
+ styles: {
+ expand: true,
+ cwd: '<%= yeoman.app %>/styles',
+ dest: '<%= yeoman.tmp.exploded %>/styles/',
+ src: '{,*/}*.css'
+ },
+ tmpImploded: {
+ expand: true,
+ cwd: '<%= yeoman.dist.exploded %>',
+ dest: '<%= yeoman.tmp.imploded %>',
+ src: '**/*'
+ },
+ copyComposition: {
+ expand: true,
+ cwd: '<%= yeoman.app %>',
+ dest: '<%= yeoman.dist.imploded %>',
+ src: 'comp-fe/**/*'
+ },
+ copyProject: {
+ expand: true,
+ cwd: '<%= yeoman.app %>',
+ dest: '<%= yeoman.dist.exploded %>',
+ src: ['**/*']
+ },
+ copyIndex: {
+ expand: true,
+ cwd: '<%= yeoman.app %>/prodHtml',
+ dest: '<%= yeoman.dist.exploded %>',
+ src: ['**/*']
+ },
+ copyComposition2: {
+ expand: true,
+ cwd: '<%= yeoman.app %>',
+ dest: '<%= yeoman.dist.exploded %>',
+ src: 'comp-fe/**/*'
+ },
+ imploded: {
+ expand: true,
+ cwd: '<%= yeoman.dist.exploded %>',
+ dest: '<%= yeoman.dist.imploded %>',
+ src: ['dcae.xml', 'WEB-INF/**']
+ }
+ },
+
+ // Run some tasks in parallel to speed up the build process
+ concurrent: {
+ server: [
+ 'less:development', 'copy:styles'
+ ],
+ test: ['copy:styles'],
+ exploded: [
+ 'less:production', 'copy:styles', 'imagemin', 'svgmin'
+ ],
+ style: ['less:production']
+ },
+
+ mkdir: {
+ all: {
+ options: {
+ create: ['<%= yeoman.dist.exploded %>/WEB-INF']
+ }
+ },
+ dist: {
+ options: {
+ create: ['<%= yeoman.dist %>']
+ }
+ },
+ imploded: {
+ options: {
+ create: ['<%= yeoman.dist.imploded %>', '<%= yeoman.tmp.imploded %>']
+ }
+ }
+ },
+
+ preprocess: {
+ options: {
+ inline: true,
+ context: {
+ DEBUG: false
+ }
+ },
+ /*html : {
+ src : [
+ '<%= yeoman.dist %>/index.html',
+ '<%= yeoman.dist %>/views/*.html'
+ ]
+ },*/
+ js: {
+ src: '<%= yeoman.tmp.exploded %>/concat/scripts/*.js'
+ }
+ }
+
+ });
+
+ grunt.registerTask('serve', 'Compile then start a connect web server', function (target) {
+ if (target === 'dist') {
+ return grunt
+ .task
+ .run(['build', 'connect:exploded:keepalive']);
+ }
+
+ grunt
+ .task
+ .run([
+ 'clean:server', // Delete .tmp folder
+ 'ngconstant:dev', // Configure constants
+ 'wiredep', // Automatically inject Bower components into the app
+ 'injector', // Inject the less files to app.less
+ 'concurrent:server', // Run some tasks in parallel to speed up the build process, need to see what the task run.
+ 'postcss:server', // Add vendor prefixed styles
+ 'connect:livereload',
+ 'watch'
+ ]);
+ });
+
+ grunt.registerTask('server', 'DEPRECATED TASK. Use the "serve" task instead', function (target) {
+ grunt
+ .log
+ .warn('The `server` task has been deprecated. Use `grunt serve` to start a server.');
+ grunt
+ .task
+ .run(['serve:' + target]);
+ });
+
+ grunt.registerTask('test', ['clean:server', 'wiredep', 'concurrent:test', 'postcss', 'connect:test']);
+
+ grunt.registerTask('build', [
+ 'clean:exploded',
+ 'ngconstant:exploded',
+ 'wiredep',
+ 'injector',
+ 'concurrent:exploded',
+ 'useminPrepare',
+ 'postcss',
+ 'ngtemplates',
+ 'concat',
+ 'preprocess:js',
+ 'ngAnnotate',
+ //'mkdir',
+ 'copy:exploded',
+ //'cdnify',
+ 'cssmin',
+ 'uglify',
+ 'mkdir:imploded',
+ 'clean:imploded',
+ 'copy:tmpImploded', // Copy the files before changing their names
+ 'copy:imploded', // Copy the WEB-INF folder and dcae.xml
+ 'filerev', // This will change the name of the files for caching.
+ 'usemin',
+ 'copy:copyComposition'
+ //'htmlmin'
+ ]);
+
+ grunt.registerTask('build2', [
+ 'clean:exploded',
+ 'ngconstant:exploded',
+ 'wiredep',
+ 'injector',
+ 'concurrent:style',
+ 'postcss',
+ // 'useminPrepare', 'postcss', 'ngtemplates', 'concat', 'preprocess:js',
+ // 'ngAnnotate', 'mkdir',
+ 'copy:copyProject',
+ 'clean:html',
+ 'copy:copyIndex'
+ ]);
+
+ grunt.registerTask('default', ['newer:jshint', 'newer:jscs', 'test', 'build']);
+};