X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=Gruntfile.js;h=72a407f921c9346421a98a219bcce8285103a4c3;hb=267087d969e68e2f5abcb18f526120d835d9a686;hp=8dc5b83bdb3a8fd74d9298c6064085d7338687e4;hpb=a8d5aa1c44c3349a9271e5f0bc3cb5154d6505d9;p=github%2Fwallabag%2Fwallabag.git diff --git a/Gruntfile.js b/Gruntfile.js index 8dc5b83b..72a407f9 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -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,34 +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', - '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', @@ -77,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/', }, ], }, @@ -138,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: [ { @@ -172,7 +165,7 @@ module.exports = function (grunt) { overwrite: true, cwd: '<%= appDir %>/themes/_global/', src: 'img', - dest: '<%= buildDir %>/themes/_global/', + dest: '<%= releaseDir %>/themes/_global/', }, ], }, @@ -187,25 +180,35 @@ 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'] + } + }); 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( @@ -213,4 +216,10 @@ 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'] + ) };