Created
December 11, 2017 14:42
-
-
Save maxbye3/5f58062b55c7fba1180d7a6a242d2b2f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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