]> git.immae.eu Git - github/wallabag/wallabag.git/blobdiff - Gruntfile.js
Reordered :fr: documentation
[github/wallabag/wallabag.git] / Gruntfile.js
index c741954973cc3321b78c893f3c92f32385e6b745..72473b21c5d0aced6976698d2641674c381e19e2 100644 (file)
@@ -3,15 +3,13 @@ module.exports = function (grunt) {
 
   grunt.initConfig({
     appDir: 'app/Resources/static',
-    buildDir: 'web/bundles/wallabagcore',
+    buildDir: 'app/Resources/build',
+    modulesDir: 'node_modules',
+    releaseDir: 'web/bundles/wallabagcore',
 
     postcss: {
       material: {
         options: {
-          map: {
-            inline: false,
-          },
-
           processors: [
             require('pixrem')(),
             require('autoprefixer')({ browsers: 'last 2 versions' }),
@@ -19,14 +17,10 @@ module.exports = function (grunt) {
           ],
         },
         src: '<%= buildDir %>/material.css',
-        dest: '<%= buildDir %>/themes/material/css/style.min.css',
+        dest: '<%= releaseDir %>/themes/material/css/style.min.css',
       },
       baggy: {
         options: {
-          map: {
-            inline: false,
-          },
-
           processors: [
             require('pixrem')(),
             require('autoprefixer')({ browsers: 'last 2 versions' }),
@@ -34,33 +28,13 @@ module.exports = function (grunt) {
           ],
         },
         src: '<%= buildDir %>/baggy.css',
-        dest: '<%= buildDir %>/themes/baggy/css/style.min.css',
+        dest: '<%= releaseDir %>/themes/baggy/css/style.min.css',
       },
     },
     concat: {
       options: {
         separator: ';',
       },
-      jsMaterial: {
-        src: [
-          '<%= appDir %>/themes/material/js/init.js',
-          '<%= appDir %>/themes/_global/js/restoreScroll.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',
@@ -76,59 +50,84 @@ module.exports = function (grunt) {
       },
     },
     browserify: {
-      '<%= buildDir %>/material.browser.js': ['<%= buildDir %>/material.js'],
-      '<%= buildDir %>/baggy.browser.js': ['<%= buildDir %>/baggy.js'],
+      dist: {
+        files: {
+          '<%= buildDir %>/material.browser.js': ['<%= appDir %>/themes/material/js/init.js'],
+          '<%= buildDir %>/baggy.browser.js': ['<%= appDir %>/themes/baggy/js/init.js']
+        }
+      },
+      options: {
+        sourceType: "module",
+        transform: [
+          ["babelify", {
+          presets: ["es2015"]
+        }], ["browserify-shim", {
+            "jquery": {
+              "exports": "$"
+            },
+            "materialize": "materialize",
+            "jquery-ui": {
+              "depends": "jquery",
+              "exports": null
+            }
+          }]
+        ],
+        browserifyOptions: {
+          browser: {
+            "jQuery": "./node_modules/jquery/dist/jquery.js",
+            "jquery.tinydot": "./node_modules/jquery.tinydot/src/jquery.tinydot.js",
+            "jquery.ui": "./node_modules/jquery-ui-browserify/dist/jquery-ui.js"
+          }
+        }
+      }
+
     },
     uglify: {
       material: {
         files: {
-          '<%= buildDir %>/themes/material/js/material.min.js':
+          '<%= releaseDir %>/themes/material/js/material.min.js':
             ['<%= buildDir %>/material.browser.js'],
-        },
-        options: {
-          sourceMap: true,
-        },
+        }
       },
       baggy: {
         files: {
-          '<%= buildDir %>/themes/baggy/js/baggy.min.js':
+          '<%= releaseDir %>/themes/baggy/js/baggy.min.js':
             ['<%= buildDir %>/baggy.browser.js'],
-        },
-        options: {
-          sourceMap: true,
-        },
+        }
       },
     },
     copy: {
       pickerjs: {
         expand: true,
-        cwd: 'node_modules/pickadate/lib',
+        cwd: '<%= modulesDir %>/pickadate/lib',
         src: 'picker.js',
         dest: '<%= buildDir %>',
       },
       annotator: {
         expand: true,
-        cwd: 'node_modules/annotator/pkg',
+        cwd: '<%= modulesDir %>/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/',
+            cwd: '<%= modulesDir %>/icomoon-free-npm/Font',
+            src: 'IcoMoon-Free.ttf',
+            dest: '<%= releaseDir %>/themes/baggy/fonts/',
           },
           {
             expand: true,
-            overwrite: true,
-            cwd: '<%= appDir %>/lib/bower-pt-sans/fonts',
-            src: '*',
-            dest: '<%= buildDir %>/themes/baggy/fonts/',
+            cwd: '<%= modulesDir %>/ptsans-npm-webfont/fonts',
+            src: 'ptsansbold.woff',
+            dest: '<%= releaseDir %>/themes/baggy/fonts/',
+          },
+          {
+            expand: true,
+            cwd: '<%= modulesDir %>/material-design-icons-iconfont/dist/fonts/',
+            src: ['MaterialIcons-Regular.eot', 'MaterialIcons-Regular.woff2', 'MaterialIcons-Regular.woff', 'MaterialIcons-Regular.ttf'],
+            dest: '<%= releaseDir %>/themes/baggy/fonts/',
           },
         ],
       },
@@ -137,33 +136,28 @@ module.exports = function (grunt) {
           {
             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',
+            cwd: '<%= modulesDir %>/icomoon-free-npm/Font',
+            src: 'IcoMoon-Free.ttf',
+            dest: '<%= releaseDir %>/themes/material/fonts',
           },
           {
             expand: true,
             overwrite: true,
-            cwd: '<%= appDir %>/lib/roboto-fontface/fonts/',
+            cwd: '<%= modulesDir %>/roboto-fontface/fonts/Roboto',
             src: '*',
-            dest: '<%= buildDir %>/themes/material/fonts/roboto/',
+            dest: '<%= releaseDir %>/themes/material/font/roboto',
           },
           {
             expand: true,
             overwrite: true,
-            cwd: '<%= appDir %>/lib/material-design-icons-iconfont/dist/fonts/',
-            src: '*',
-            dest: '<%= buildDir %>/themes/material/fonts/',
+            cwd: '<%= modulesDir %>/material-design-icons-iconfont/dist/fonts/',
+            src: ['MaterialIcons-Regular.eot', 'MaterialIcons-Regular.woff2', 'MaterialIcons-Regular.woff', 'MaterialIcons-Regular.ttf'],
+            dest: '<%= releaseDir %>/themes/material/fonts/',
           },
         ],
       },
+    },
+    symlink: {
       pics: {
         files: [
           {
@@ -171,7 +165,7 @@ module.exports = function (grunt) {
             overwrite: true,
             cwd: '<%= appDir %>/themes/_global/',
             src: 'img',
-            dest: '<%= buildDir %>/themes/_global/',
+            dest: '<%= releaseDir %>/themes/_global/',
           },
         ],
       },
@@ -186,25 +180,38 @@ module.exports = function (grunt) {
       all: {
         src: ['./<%= buildDir %>'],
       },
+      release: {
+        src: ['./<%= releaseDir %>/*'],
+      }
     },
+    eslint: {
+      target: ['<%= appDir %>/themes/material/js/init.js', '<%= appDir %>/themes/baggy/js/init.js']
+    },
+    stylelint: {
+      target: ['<%= appDir %>/themes/material/css/*.css', '<%= appDir %>/themes/baggy/css/*.css']
+    },
+    watch: {
+      files: ['<%= appDir %>/**/*.css', '<%= appDir %>/**/*.js'],
+      tasks: ['css', 'js']
+    }
   });
 
   grunt.registerTask(
     'fonts',
     'Install fonts',
-    ['symlink:baggyfonts', 'symlink:materialfonts']
+    ['copy:baggyfonts', 'copy:materialfonts']
     );
 
   grunt.registerTask(
     'js',
     'Build and install js files',
-    ['clean:js', 'copy:pickerjs', 'concat:jsMaterial', 'concat:jsBaggy', 'browserify', 'uglify']
+    ['clean:js', 'copy:pickerjs', 'browserify', 'uglify']
     );
 
   grunt.registerTask(
     'default',
     'Build and install everything',
-    ['clean', 'copy:pickerjs', 'concat', 'browserify', 'uglify', 'postcss', 'symlink']
+    ['clean', 'copy:pickerjs', 'concat', 'browserify', 'uglify', 'postcss', 'copy', 'symlink']
     );
 
   grunt.registerTask(
@@ -212,4 +219,12 @@ module.exports = function (grunt) {
     'Compiles the stylesheets.',
     ['clean:css', 'concat:cssMaterial', 'concat:cssBaggy', 'postcss']
   );
+
+  grunt.registerTask(
+      'tests',
+      'Test css and js style conformity',
+      ['eslint', 'stylelint', 'default']
+  ),
+
+  grunt.loadNpmTasks('grunt-contrib-watch');
 };