Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'use strict';
- var getBuildDir = function(grunt) {
- return grunt.option('dir');
- }
- var getEditLess = function(grunt) {
- return grunt.option('editLess');
- }
- var getPort = function(grunt) {
- return grunt.option('port');
- }
- var getEnv = function(grunt) {
- return grunt.option('env');
- }
- var getSSL = function(grunt) {
- return grunt.option('ssl');
- }
- module.exports = function (grunt) {
- require('time-grunt')(grunt);
- require('jit-grunt')(grunt, {
- sprite: 'grunt-spritesmith',
- watch: 'grunt-contrib-watch-chokidar'
- });
- var gruntConfig = grunt.file.readJSON('gruntConfig.json');
- var buildDir = '';
- var editLess = false;
- var production = false;
- var mobile = false;
- var ssl = false;
- if (getBuildDir(grunt)) {
- buildDir = getBuildDir(grunt);
- } else {
- buildDir = gruntConfig.BUILD_PUBLIC_DIR;
- }
- if (getPort(grunt)) {
- var SERVER_PORT = getPort(grunt);
- } else {
- var SERVER_PORT = 3000;
- }
- if (getEditLess(grunt)) {
- editLess = true;
- }
- if (getSSL(grunt)) {
- ssl = true;
- }
- if (getEnv(grunt) == 'prod') {
- production = true;
- }
- if (getEnv(grunt) == 'mobile') {
- mobile = true;
- }
- //js
- var js = grunt.file.readJSON('static/js.json');
- // configurable paths
- var yeomanConfig = {
- sitename: gruntConfig.PROJECT_NAME,
- tmp: '.',
- dev: gruntConfig.LOCAL_CQ5_PROJECT_DIR,
- igamingDev: gruntConfig.LOCAL_IGAMING_CQ5_PROJECT_DIR,
- local: 'target',
- build: buildDir,
- releasePackage: 'baseline-alpha.zip',
- cashierApp: gruntConfig.LOCAL_CASHIER_PROJECT_DIR,
- TPApiKey: gruntConfig.TINYPNG_API_KEY,
- devAssetsCQDirectory: 'ui/portal-app/src/main/content/jcr_root',
- devAssetsPath: 'etc/designs/interactive/ilottery/common/home',
- igamingDevAssetsCQDirectory: 'ui/portal-app/src/main/content/jcr_root',
- igamingDevAssetsPath: 'etc/clientlibs/interactive/igaming/common/libs'
- };
- var lessOptions = {
- plugins: [
- require('less-plugin-glob'),
- new (require('less-plugin-autoprefix'))({browsers: ["last 2 versions"]})
- ]
- }
- grunt.initConfig({
- yeoman: yeomanConfig,
- less: {
- local: {
- options: lessOptions,
- files: {
- "<%= yeoman.local %>/static/portal.css": "static/less/portal/portal.less"
- }
- },
- styleguide: {
- options: lessOptions,
- files: {
- "<%= yeoman.local %>/static/portal.css": "static/less/portal/portal.less",
- "<%= yeoman.local %>/static/styleguide.css": "static/less/styleguide/styleguide.less"
- }
- },
- dev: {
- options: Object.assign({
- modifyVars: {
- 'base-url': "'/content/dam/interactive/ilottery/images/'",
- // 'ilottery-base-url': "'/content/dam/interactive/ilottery/images/'",
- 'igaming-base-url': "'/content/dam/interactive/igaming/'",
- 'icon-font-path': "'/<%= yeoman.devAssetsPath %>/fonts/'",
- "sprite-image-path": "'/<%= yeoman.devAssetsPath %>/images/'",
- 'fa-font-path': "'/<%= yeoman.devAssetsPath %>/fonts/font-awesome/fonts'"
- }
- }, lessOptions),
- files: {
- "<%= yeoman.dev %>/<%= yeoman.devAssetsCQDirectory %>/<%= yeoman.devAssetsPath %>/portal.css": "static/less/portal/portal.less",
- "<%= yeoman.dev %>/<%= yeoman.devAssetsCQDirectory %>/<%= yeoman.devAssetsPath %>/cq-components.css": "static/less/cq/cq-portal.less",
- }
- },
- cashierLocal: {
- options: Object.assign({
- compress: true,
- sourceMap: true,
- sourceMapFileInline: true,
- sourceMapRootpath: "/"
- }, lessOptions),
- files: {
- "<%= yeoman.local %>/static/cashierapp/cashierapp-portal.css": "static/less/cashierapp/cashierapp-portal.less",
- "<%= yeoman.local %>/static/cashierapp/cashierapp-mobile.css": "static/less/cashierapp/cashierapp-mobile.less"
- }
- },
- cashierDev: {
- options: Object.assign({
- modifyVars: {
- 'base-url': "'images/'"
- , 'icon-font-path': "'../fonts/'"
- }
- }, lessOptions),
- files: {
- "<%= yeoman.cashierApp %>cashier-web/src/assets/styles/cashierapp-mobile.css": "static/less/cashierapp/cashierapp-mobile.less",
- "<%= yeoman.cashierApp %>cashier-web/src/assets/styles/cashierapp-portal.css": "static/less/cashierapp/cashierapp-portal.less"
- }
- }
- },
- // Temp: iGaming variables for components
- // This will be removed once iGaming and iLottery become one instance in CQ
- concat: {
- dev: {
- src: ['static/less/portal/variables/*'],
- dest: '<%= yeoman.igamingDev %>/<%= yeoman.igamingDevAssetsCQDirectory %>/<%= yeoman.igamingDevAssetsPath %>/less/variables.less'
- }
- },
- sprite: {
- global: {
- src: ['static/img/sprites/**/*.png'],
- retinaSrcFilter: ['static/img/sprites**/*@2x.png'],
- dest: 'static/img/spritesheet.png',
- imgPath: '@{sprite-image-path}spritesheet.png',
- // imgPath: '@{base-url}spritesheet.png'+ '?v' + (new Date().getTime()),
- retinaDest: 'static/img/spritesheet@2x.png',
- retinaImgPath: '@{sprite-image-path}spritesheet@2x.png',
- // retinaImgPath: '@{base-url}spritesheet@2x.png'+ '?v' + (new Date().getTime()),
- cssTemplate: 'static/handlebar-templates/sprites.less.handlebars',
- padding: 3,
- destCss: 'static/less/portal/sprites.less'
- }
- },
- sync: {
- local: {
- files: [{
- cwd: '.',
- src: [
- 'static/{,**/}*.{jpg,png,gif,jpeg,ttf,woff,woff2,eot,svg,js,html,css,pdf,less,json}',
- 'bower_components/slick-carousel/slick/**/*.{jpg,png,gif,jpeg,ttf,woff,woff2,eot,svg,js,css}',
- 'bower_components/bootstrap-daterangepicker/daterangepicker-bs3.css',
- "bower_components/underscore/underscore-min.js",
- "bower_components/bootstrap/dist/js/bootstrap.js",
- "bower_components/moment/moment.js",
- "bower_components/bootstrap-daterangepicker/daterangepicker.js",
- "bower_components/bootstrap-datepicker/js/bootstrap-datepicker.js",
- "bower_components/jquery-validation/dist/jquery.validate.js",
- "bower_components/matchHeight/jquery.matchHeight-min.js",
- "bower_components/picturefill/dist/picturefill.min.js",
- "bower_components/bootstrap-select/dist/js/bootstrap-select.js",
- "bower_components/slick-carousel/slick/slick.js",
- "bower_components/isotope/dist/isotope.pkgd.min.js",
- "bower_components/jquery.countdown/dist/jquery.countdown.js",
- "bower_components/screenfull/dist/screenfull.min.js",
- "bower_components/tablesorter/dist/js/jquery.tablesorter.combined.min.js",
- "bower_components/tablesorter/dist/js/extras/jquery.tablesorter.pager.min.js",
- "bower_components/photoswipe/dist/**/*",
- "bower_components/jquery/dist/**/*",
- '!node_modules/**/*',
- '!ui/**/*',
- '!Gruntfile.js'
- ],
- dest: '<%= yeoman.local %>'
- }]
- }
- },
- copy: {
- cqfonts: {
- files: [{
- expand: true,
- // flatten: true,
- cwd: 'static/fonts/',
- src: '**',
- dest: '<%= yeoman.dev %>/<%= yeoman.devAssetsCQDirectory %>/<%= yeoman.devAssetsPath %>/fonts/',
- filter: 'isFile'
- }]
- },
- cqless: {
- files: [{
- expand: true,
- // flatten: true,
- cwd: 'static/less/',
- src: [
- '**',
- '!styleguide/**/*'
- ],
- dest: '<%= yeoman.dev %>/<%= yeoman.devAssetsCQDirectory %>/<%= yeoman.devAssetsPath %>/less/portal/'
- // filter: 'isFile'
- }]
- },
- build: {
- files: [{
- expand: true,
- // flatten: true,
- cwd: '<%= yeoman.local %>',
- src: [
- '**/*'
- ],
- dest: '<%= yeoman.build %>'
- // filter: 'isFile'
- }]
- },
- tmp: {
- files: [{
- expand: true,
- // flatten: true,
- cwd: '.',
- src: [
- '**/*.{jpg,png,gif,jpeg,ttf,woff,woff2,eot,svg,js,html,css,pdf,map}',
- '!node_modules/**/*',
- '!bower_components/**/*',
- '!ui/**/*',
- '!Gruntfile.js'
- ],
- dest: 'tmp'
- }]
- },
- local: {
- files: [{
- expand: true,
- // flatten: true,
- cwd: '.',
- src: [
- 'static/{,**/}*.{jpg,png,gif,jpeg,ttf,woff,woff2,eot,svg,js,html,css,pdf,less,json}',
- 'bower_components/slick-carousel/slick/**/*.{jpg,png,gif,jpeg,ttf,woff,woff2,eot,svg,js,css}',
- 'bower_components/bootstrap-daterangepicker/daterangepicker-bs3.css',
- "bower_components/underscore/underscore-min.js",
- "bower_components/bootstrap/dist/js/bootstrap.js",
- "bower_components/moment/moment.js",
- "bower_components/bootstrap-daterangepicker/daterangepicker.js",
- "bower_components/bootstrap-datepicker/js/bootstrap-datepicker.js",
- "bower_components/jquery-validation/dist/jquery.validate.js",
- "bower_components/matchHeight/jquery.matchHeight-min.js",
- "bower_components/picturefill/dist/picturefill.min.js",
- "bower_components/bootstrap-select/dist/js/bootstrap-select.js",
- "bower_components/slick-carousel/slick/slick.js",
- "bower_components/isotope/dist/isotope.pkgd.min.js",
- "bower_components/jquery.countdown/dist/jquery.countdown.js",
- "bower_components/screenfull/dist/screenfull.min.js",
- "bower_components/tablesorter/dist/js/jquery.tablesorter.combined.min.js",
- "bower_components/tablesorter/dist/js/extras/jquery.tablesorter.pager.min.js",
- "bower_components/photoswipe/dist/**/*",
- "bower_components/jquery/dist/**/*",
- '!node_modules/**/*',
- '!ui/**/*',
- '!Gruntfile.js'
- ],
- dest: '<%= yeoman.local %>'
- }]
- },
- fa: {
- files: [{
- expand: true,
- // flatten: true,
- cwd: 'bower_components/font-awesome/',
- src: '**',
- dest: 'static/fonts/font-awesome/',
- filter: 'isFile'
- }]
- },
- },
- bless: {
- css: {
- options: {},
- files: {
- '<%= yeoman.local %>/static/ie-abovelimit.css': '<%= yeoman.local %>/static/portal.css'
- }
- }
- },
- clean: {
- html: ['<%= yeoman.local %>/*.html'],
- tmp: {
- html: ['<%= yeoman.tmp %>/*.html'],
- tmp: ['tmp'],
- },
- local: ['<%= yeoman.local %>'],
- build: ['<%= yeoman.build %>']
- },
- /* lets look at image compression */
- imagemin: {
- local: {
- files: [{
- expand: true,
- cwd: 'static/img',
- src: '{,*/}*.{png,jpg,jpeg,gif}',
- dest: '<%= yeoman.local %>/static/img'
- }]
- }
- },
- tinypng: {
- options: {
- apiKey: '<%= yeoman.TPApiKey %>',
- summarize: true,
- summarizeOnError: true,
- showProgress: true
- },
- ssDev: {
- expand: true,
- cwd: 'static/img',
- src: [
- 'spritesheet.png',
- 'spritesheet@2x.png'
- ],
- dest: '<%= yeoman.dev %>/<%= yeoman.devAssetsCQDirectory %>/<%= yeoman.devAssetsPath %>/images/'
- }
- },
- svgmin: {
- local: {
- files: [{
- expand: true,
- cwd: 'static/img',
- src: '{,**/}*.svg',
- dest: '<%= yeoman.local %>/static/img'
- }]
- }
- },
- uglify: {
- options: {
- mangle: false
- },
- my_target: {
- files: {
- '<%= yeoman.local %>/static/js/all.js': js,
- }
- }
- },
- assemble: {
- options: {
- editLessMode: editLess,
- assets: 'static',
- images: 'static/img/',
- igamingImages: 'static/img/igaming/',
- partials: 'ui/partials/**/*.hbs',
- layout: 'default.hbs',
- layoutdir: 'ui/layouts/',
- data: ['static/lang/language.json'],
- flatten: true,
- production: production,
- mobile: mobile,
- helpers: 'helpers/**/*.js'
- },
- pages: {
- files: {
- '<%= yeoman.tmp %>/': ['ui/pages/**/*.hbs']
- }
- },
- local: {
- files: {
- '<%= yeoman.local %>/': ['ui/pages/**/*.hbs']
- }
- }
- },
- watch: {
- less: {
- files: ['static/**/*.less'],
- tasks: ['less:local']
- // tasks: ['less:cashierLocal', 'newer:copy:local']
- },
- js: {
- files: ['static/{,**/}*.js'],
- tasks: ['newer:copy:local']
- },
- img: {
- files: ['static/**/*.{jpg,png,gif,jpeg,svg}'],
- tasks: ['sprite', 'newer:copy:local']
- },
- assemble: {
- files: ['ui/**/*.hbs', 'static/lang/language.json'],
- tasks: ['assemble:local']
- }
- },
- browserSync: {
- bsFiles: {
- src: [
- '<%= yeoman.local %>/static/*.css',
- '<%= yeoman.local %>/*.html'
- ]
- },
- options: {
- https: ssl,
- watchTask: true,
- server: './<%= yeoman.local %>',
- port: SERVER_PORT
- }
- },
- asciify: {
- banner: {
- text: '<%= yeoman.sitename %>',
- // Add the awesome to the console, and use the best font.
- options: {
- font: 'big',
- log: true
- }
- }
- },
- //cssmin css for --prod
- cssmin: {
- portal: {
- files: {
- '<%= yeoman.local %>/static/all.css': [
- 'bower_components/slick-carousel/slick/slick.css',
- 'bower_components/bootstrap-daterangepicker/daterangepicker-bs3.css',
- 'static/js/bootstrap-datepicker/css/datepicker.css',
- '<%= yeoman.local %>/static/portal.css'
- ]
- }
- } ,
- cashier: {
- files: {
- '<%= yeoman.cashierApp %>cashier-web/src/assets/styles/cashierapp-portal.min.css': '<%= yeoman.cashierApp %>cashier-web/src/assets/styles/cashierapp-portal.css',
- '<%= yeoman.cashierApp %>cashier-web/src/assets/styles/cashierapp-mobile.min.css': '<%= yeoman.cashierApp %>cashier-web/src/assets/styles/cashierapp-mobile.css'
- }
- }
- },
- compress: {
- main: {
- options: {
- archive: 'build/<%= yeoman.releasePackage %>',
- },
- expand: true,
- cwd: '<%= yeoman.local %>/',
- src: ['**/*'],
- dest: '/'
- }
- },
- ssh: grunt.file.readJSON('ssh.json'),
- /* example file
- {
- 'path': '//home/mypath',
- 'host': 'myhost',
- 'username': 'username',
- } */
- sftp: {
- deploy: {
- files: {
- "./": 'build/<%= yeoman.releasePackage %>'
- },
- options: {
- path: '<%= ssh.path %>',
- host: '<%= ssh.host %>',
- username: '<%= ssh.username %>',
- password: '<%= ssh.password %>',
- showProgress: true,
- createDirectories: true
- }
- }
- }
- });
- grunt.registerTask('default', function () {
- grunt.loadNpmTasks('assemble');
- if (production == true) {
- return grunt.task.run(['sprite', 'newer:copy:fa', 'newer:copy:local', 'newer:imagemin', 'newer:svgmin', 'less:local', 'uglify', 'cssmin:portal', 'assemble:local']);
- } else {
- return grunt.task.run(['sprite', 'newer:copy:fa', 'newer:copy:local', 'newer:imagemin', 'newer:svgmin', 'less:local', 'assemble:local']);
- }
- });
- grunt.registerTask('images', ['tinypng']);
- grunt.registerTask('serve', ['default', 'browserSync', 'asciify', 'watch']);
- grunt.registerTask('cleanlocal', ['clean:local']);
- grunt.registerTask('dev', ['less:dev', 'concat:dev', 'newer:copy:cqfonts', 'newer:copy:cqless']);
- grunt.registerTask('devPng', ['less:dev', 'newer:copy:cqfonts', 'newer:copy:cqless', 'newer:tinypng']);
- grunt.registerTask('cashier-local', ['less:cashierLocal', 'browserSync', 'watch']);
- grunt.registerTask('cashier-dev', ['less:cashierDev', 'cssmin:cashier']);
- grunt.registerTask('build', ['default', 'copy:build']);
- grunt.registerTask('zip', ['default', 'compress']);
- grunt.registerTask('deploy', ['default', 'compress', 'sftp']);
- grunt.registerTask('cleanbuild', ['clean:build']);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement