Skip to content

Instantly share code, notes, and snippets.

@maxbye3
Created December 11, 2017 14:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save maxbye3/5f58062b55c7fba1180d7a6a242d2b2f to your computer and use it in GitHub Desktop.
Save maxbye3/5f58062b55c7fba1180d7a6a242d2b2f to your computer and use it in GitHub Desktop.
/**
* Created by Hiten on 17/04/2016.
*/
/* jshint node: true */
module.exports = function (grunt) {
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-html2js');
grunt.loadNpmTasks('grunt-karma');
grunt.loadNpmTasks('grunt-ngdocs');
grunt.loadNpmTasks('grunt-contrib-connect');
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-aws-s3');
grunt.loadNpmTasks('grunt-available-tasks');
grunt.loadNpmTasks('grunt-contrib-compress');
grunt.loadNpmTasks('grunt-exec');
grunt.loadNpmTasks('grunt-bump');
grunt.template.addDelimiters('myDelimiters', '{%', '%}');
// Project configuration.
grunt.util.linefeed = '\n';
grunt.initConfig({
modules: [],
modulesTpls: [],
pkg: grunt.file.readJSON('package.json'),
dist: 'dist/<%= pkg.version %>',
lib: 'lib',
filename: 'cooperative',
meta: {
modules: 'angular.module("cooperative", <%= JSON.stringify(modules) %>);',
modulesTpl: 'angular.module("cooperative.tpls", <%= JSON.stringify(modulesTpls) %>);',
banner: ['/*',
' * <%= pkg.name %>',
' * <%= pkg.homepage %>\n',
' * Version: <%= pkg.version %> - <%= grunt.template.today("yyyy-mm-dd") %>',
' * License: <%= pkg.license %>',
' */\n'].join('\n')
},
jshint: {
files: ['Gruntfile.js' ,'src/**/*.js', '!src/e2e/test1.spec.js'],
options: {
jshintrc: '.jshintrc',
}
},
clean: {
dist: {
src: ['dist/']
},
lib: {
src: ['lib/']
},
temp: {
src: ['dist/temp']
}
},
concat: {
source: {
options: {
banner: '<%= meta.banner %>\n<%= meta.modules %>\n'
},
src: ['src/**/*.js', '!src/**/*.spec.js'],
dest: '<%= dist %>/<%= filename %>-<%= pkg.version %>.js'
},
lib: {
options: {
banner: '<%= meta.banner %>\n<%= meta.modules %>\n'
},
src: ['src/**/*.js', '!src/**/*.spec.js'],
dest: '<%= lib %>/<%= filename %>.js'
},
temp: {
options: {
banner: '<%= meta.banner %>\n<%= meta.modules %>\n'
},
src: ['src/**/*.js', '!src/**/*.spec.js'],
dest: 'dist/temp/source.js'
},
template: {
src: ['dist/temp/**/*.js', '!src/**/*.spec.js'],
dest: '<%= dist %>/<%= filename %>-tpls-<%= pkg.version %>.js'
},
test: {
src: ['tests/e2e/*.js'],
dest: 'dist/e2e/test-toolkit-0.1.00.spec.js',
}
},
html2js: {
temp: {
options: {
base: '.',
module: 'cooperative.tpls',
singleModule: false,
useStrict: true,
htmlmin: {
collapseBooleanAttributes: true,
collapseWhitespace: true,
removeAttributeQuotes: true,
removeComments: true,
removeEmptyAttributes: true,
removeRedundantAttributes: true,
removeScriptTypeAttributes: true,
removeStyleLinkTypeAttributes: true
}
},
files: [{
src: ['template/**/*.html'],
dest: 'dist/temp/templates.js'
}]
}
},
uglify: {
source: {
src: ['<%= dist %>/<%= filename %>-<%= pkg.version %>.js'],
dest: '<%= dist %>/<%= filename %>-<%= pkg.version %>.min.js'
},
template: {
src: ['<%= dist %>/<%= filename %>-tpls-<%= pkg.version %>.js'],
dest: '<%= dist %>/<%= filename %>-tpls-<%= pkg.version %>.min.js'
},
lib: {
src: ['<%= lib %>/<%= filename %>.js'],
dest: '<%= lib %>/<%= filename %>.min.js'
}
},
karma: {
dev: {
configFile: 'karma.conf.js',
background: true,
singleRun: false
},
build: {
configFile: 'karma.conf.js',
browsers: ['PhantomJS'],
coverageReporter: {
check: {
global: {
statements: 85,
branches: 70,
functions: 85,
lines: 85
}
}
},
junitReporter: {
outputDir: 'test_results/',
outputFile: 'karma_test_results.xml',
useBrowserName: false
},
singleRun: true
}
},
connect: {
coverage: {
options: {
port: '9999',
hostname: '*',
open: true,
keepalive: false,
base: {
path: 'test_results/coverage_results-html/',
options: {
index: 'index.html',
maxAge: 300000
}
}
}
},
ngdocs: {
options: {
port: '9997',
hostname: '*',
open: true,
keepalive: false,
base: {
path: '<%= dist %>/docs/',
options: {
index: 'index.html',
maxAge: 300000
}
}
}
}
},
watch: {
karma: {
files: ['src/**/*.js', 'tests/**/*.js'],
tasks: ['karma:dev:run', 'ngdocs']
}
},
availabletasks: { // task
tasks: {
options: {
filter: 'include',
tasks: ['build', 'dev']
}
} // target
},
ngdocs: {
options: {
dest: '<%= dist %>/docs/',
scripts: [
'bower_components/jquery/dist/jquery.min.js',
'bower_components/angular/angular.min.js',
'bower_components/angular-animate/angular-animate.min.js',
'bower_components/angular-cookies/angular-cookies.min.js',
'bower_components/underscore/underscore-min.js',
'bower_components/angular-bootstrap/ui-bootstrap.min.js',
'bower_components/xdomaincookie/dist/xdomaincookie.js',
'bower_components/crypto-js/rollups/aes.js',
'bower_components/angular-ui-router/release/angular-ui-router.min.js',
'bower_components/angular-translate/angular-translate.min.js',
'bower_components/angular-translate-loader-static-files/angular-translate-loader-static-files.min.js',
'bower_components/angular-translate-loader-url/angular-translate-loader-url.min.js',
'bower_components/angular-translate-storage-cookie/angular-translate-storage-cookie.min.js',
'bower_components/angular-translate-storage-local/angular-translate-storage-local.min.js',
'<%= dist %>/<%= filename %>-tpls-<%= pkg.version %>.js'],
},
all: {
src: ['src/dal.core*/*.js', 'src/directive.data*/*.js', 'src/directive.uploads*/*.js', 'src/biz.util*/*.js', 'src/biz.state*/*.js', 'src/directive.uploads*/*.js', 'src/biz.uploads*/*.js', '!src/**/*.spec.js'],
}
},
compress: {
tar: {
options: {
mode: 'tar',
archive: '<%= dist %>/<%= filename %>-<%= pkg.version %>.tar.gz'
},
expand: true,
cwd: '<%= dist %>/',
src: ['**/*', '!**/*.zip', '!**/*.tar.gz'],
dest: '/'
},
zip: {
options: {
mode: 'zip',
archive: '<%= dist %>/<%= filename %>-<%= pkg.version %>.zip'
},
expand: true,
cwd: '<%= dist %>/',
src: ['**/*', '!**/*.zip', '!**/*.tar.gz'],
dest: '/'
}
},
copy: {
'bowerJson': {
src: 'bower.json',
dest: '<%= dist %>/bower.json'
},
'packageJson': {
src: 'package.json',
dest: '<%= dist %>/package.json'
},
'dest-to-efs': {
expand: true,
cwd: '<%= dist %>',
src: ['**/*'],
dest: process.env['HOME'] + '/efs/ctp.apps/ctp.ezyAppFrmWrk/dist/<%= pkg.version %>/',
},
'archive-to-efs': {
expand: true,
cwd: '<%= dist %>',
src: '<%= filename %>-<%= pkg.version %>.tar.gz',
dest: process.env['HOME'] + '/efs/ctp.apps/ctp.ezyAppFrmWrk/archive/',
}
},
semver: {
options: {
// Task-specific options go here.
space: '\t'
},
commit: {
// Target-specific file lists and/or options go here.
files: [{
src: 'package.json',
dest: 'package.json'
}, {
src: 'bower.json',
dest: 'bower.json'
}]
},
},
bump: {
options: {
files: ['package.json', 'bower.json'],
updateConfigs: ['pkg'],
commit: false,
createTag: false,
push: false
}
},
exec: {
generate_mocks: {
cmd: 'node tests/generator/index.js'
}
}
});
grunt.registerTask('custom-SrcModuleNames', 'your description', function () {
var modules = grunt.config('modules');
grunt.file.expand({
cwd: 'src/'
}, '**/*').forEach(function (dir) {
if (grunt.file.isDir('src/' + dir)) {
modules.push('cooperative.' + dir.replace(/\//gi, '.'));
}
});
grunt.config('modules', modules);
});
grunt.registerTask('custom-AddTemplateToModules', 'your description', function () {
var modules = grunt.config('modules');
modules.push('cooperative.tpls');
grunt.config('modules', modules);
});
grunt.registerTask('default', ['availabletasks']);
grunt.registerTask('help', ['availabletasks']);
grunt.registerTask('common', ['jshint', 'custom-SrcModuleNames'/*, 'exec:generate_mocks'*/]);
grunt.registerTask('build-source', ['concat:source', 'uglify:source']);
grunt.registerTask('build-lib', ['concat:lib', 'uglify:lib']);
grunt.registerTask('build-templates', ['custom-AddTemplateToModules', 'concat:temp', 'html2js:temp', 'concat:template', 'clean:temp', 'uglify:template']);
grunt.registerTask('build', ['common', 'karma:build' ,'clean:dist','clean:lib', 'build-source', 'build-lib', 'build-templates', 'ngdocs', 'copy:bowerJson', 'copy:packageJson', 'compress:tar', 'compress:zip', 'concat:test']);
grunt.registerTask('deploy-efs', ['build', 'copy:dest-to-efs', 'copy:archive-to-efs']);
grunt.registerTask('dev', ['common', 'karma:dev', 'ngdocs', 'connect:coverage', 'connect:ngdocs', 'watch:karma']);
grunt.registerTask('dev-generate-mocks', ['exec:generate_mocks']);
grunt.registerTask('dev-prep-commit', ['common', 'karma:build', 'bump:patch', 'build']);
grunt.registerTask('dev-prep-commit-patch', ['dev-prep-commit']);
grunt.registerTask('dev-prep-commit-minor', ['common', 'karma:build', 'bump:minor', 'build']);
grunt.registerTask('dev-prep-commit-major', ['common', 'karma:build', 'bump:major', 'build']);
grunt.registerTask('dev-prep-commit-prerelease', ['common', 'karma:build', 'bump:prerelease', 'build']);
return grunt;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment