aboutsummaryrefslogblamecommitdiffhomepage
path: root/Gruntfile.js
blob: 8dc5b83bdb3a8fd74d9298c6064085d7338687e4 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11









                                         
                          


                                

                                                                     
                                            
                                                                  


                  
                          


                                

                                                                     
                                         
                                                               

                
                       

                   
                                                     
                                                             
                                                              
          
                                            

                




                                                              
                                                         
          
                                         


                                                             
                                                    
          
                                             

                 
                                                 
          
                                          

                                                                             
                                                                       



                                                               
                                                    






                                                         
                                                 









                                          
                                



                                          
                                                   





                            

                                                    


                            



                                                         




                            

                                                     


                            

                                                    


                            

                                                                  


                            
                                                                                


                                                           






                                                 


                                                    

            
                                          
           
                                                                     
            

                                   























                                                                                                
  
module.exports = function (grunt) {
  require('load-grunt-tasks')(grunt);

  grunt.initConfig({
    appDir: 'app/Resources/static',
    buildDir: 'web/bundles/wallabagcore',

    postcss: {
      material: {
        options: {
          map: {
            inline: false,
          },

          processors: [
            require('pixrem')(),
            require('autoprefixer')({ browsers: 'last 2 versions' }),
            require('cssnano')(),
          ],
        },
        src: '<%= buildDir %>/material.css',
        dest: '<%= buildDir %>/themes/material/css/style.min.css',
      },
      baggy: {
        options: {
          map: {
            inline: false,
          },

          processors: [
            require('pixrem')(),
            require('autoprefixer')({ browsers: 'last 2 versions' }),
            require('cssnano')(),
          ],
        },
        src: '<%= buildDir %>/baggy.css',
        dest: '<%= buildDir %>/themes/baggy/css/style.min.css',
      },
    },
    concat: {
      options: {
        separator: ';',
      },
      jsMaterial: {
        src: [
          '<%= appDir %>/themes/material/js/init.js',
          '<%= appDir %>/themes/_global/js/restoreScroll.js',
          'node_modules/jquery.tinydot/src/jquery.tinydot.js',
        ],
        dest: '<%= buildDir %>/material.js',
      },
      jsBaggy: {
        src: [
          '<%= appDir %>/themes/baggy/js/init.js',
          '<%= appDir %>/themes/_global/js/restoreScroll.js',
          '<%= appDir %>/themes/baggy/js/autoClose.js',
          '<%= appDir %>/themes/baggy/js/autoCompleteTags.js',
          '<%= appDir %>/themes/baggy/js/closeMessage.js',
          '<%= appDir %>/themes/baggy/js/popupForm.js',
          // Save link is no more used for now
          // '<%= appDir %>/themes/baggy/js/saveLink.js',
        ],
        dest: '<%= buildDir %>/baggy.js',
      },
      cssMaterial: {
        src: [
          'node_modules/materialize-css/bin/materialize.css',
          '<%= appDir %>/themes/material/css/*.css',
        ],
        dest: '<%= buildDir %>/material.css',
      },
      cssBaggy: {
        src: [
          '<%= appDir %>/themes/baggy/css/*.css',
        ],
        dest: '<%= buildDir %>/baggy.css',
      },
    },
    browserify: {
      '<%= buildDir %>/material.browser.js': ['<%= buildDir %>/material.js'],
      '<%= buildDir %>/baggy.browser.js': ['<%= buildDir %>/baggy.js'],
    },
    uglify: {
      material: {
        files: {
          '<%= buildDir %>/themes/material/js/material.min.js':
            ['<%= buildDir %>/material.browser.js'],
        },
        options: {
          sourceMap: true,
        },
      },
      baggy: {
        files: {
          '<%= buildDir %>/themes/baggy/js/baggy.min.js':
            ['<%= buildDir %>/baggy.browser.js'],
        },
        options: {
          sourceMap: true,
        },
      },
    },
    copy: {
      pickerjs: {
        expand: true,
        cwd: 'node_modules/pickadate/lib',
        src: 'picker.js',
        dest: '<%= buildDir %>',
      },
      annotator: {
        expand: true,
        cwd: 'node_modules/annotator/pkg',
        src: 'annotator.min.js',
        dest: '<%= buildDir %>/themes/_global/js/',
      },
    },
    symlink: {
      baggyfonts: {
        files: [
          {
            expand: true,
            overwrite: true,
            cwd: '<%= appDir %>/lib/icomoon-bower/',
            src: 'fonts',
            dest: '<%= buildDir %>/themes/baggy/',
          },
          {
            expand: true,
            overwrite: true,
            cwd: '<%= appDir %>/lib/bower-pt-sans/fonts',
            src: '*',
            dest: '<%= buildDir %>/themes/baggy/fonts/',
          },
        ],
      },
      materialfonts: {
        files: [
          {
            expand: true,
            overwrite: true,
            cwd: '<%= appDir %>/lib/icomoon-bower/',
            src: 'fonts',
            dest: '<%= buildDir %>/themes/material/',
          },
          {
            expand: true,
            overwrite: true,
            cwd: 'node_modules/materialize-css/',
            src: 'font',
            dest: '<%= buildDir %>/themes/material',
          },
          {
            expand: true,
            overwrite: true,
            cwd: '<%= appDir %>/lib/roboto-fontface/fonts/',
            src: '*',
            dest: '<%= buildDir %>/themes/material/fonts/roboto/',
          },
          {
            expand: true,
            overwrite: true,
            cwd: '<%= appDir %>/lib/material-design-icons-iconfont/dist/fonts/',
            src: '*',
            dest: '<%= buildDir %>/themes/material/fonts/',
          },
        ],
      },
      pics: {
        files: [
          {
            expand: true,
            overwrite: true,
            cwd: '<%= appDir %>/themes/_global/',
            src: 'img',
            dest: '<%= buildDir %>/themes/_global/',
          },
        ],
      },
    },
    clean: {
      css: {
        src: ['<%= buildDir %>/**/*.css'],
      },
      js: {
        src: ['<%= buildDir %>/**/*.js', '<%= buildDir %>/**/*.map'],
      },
      all: {
        src: ['./<%= buildDir %>'],
      },
    },
  });

  grunt.registerTask(
    'fonts',
    'Install fonts',
    ['symlink:baggyfonts', 'symlink:materialfonts']
    );

  grunt.registerTask(
    'js',
    'Build and install js files',
    ['clean:js', 'copy:pickerjs', 'concat:jsMaterial', 'concat:jsBaggy', 'browserify', 'uglify']
    );

  grunt.registerTask(
    'default',
    'Build and install everything',
    ['clean', 'copy:pickerjs', 'concat', 'browserify', 'uglify', 'postcss', 'symlink']
    );

  grunt.registerTask(
    'css',
    'Compiles the stylesheets.',
    ['clean:css', 'concat:cssMaterial', 'concat:cssBaggy', 'postcss']
  );
};