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'}),
- require('cssnano')()
- ]
+ require('autoprefixer')({ browsers: 'last 2 versions' }),
+ require('cssnano')(),
+ ],
},
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'}),
- require('cssnano')()
- ]
+ require('autoprefixer')({ browsers: 'last 2 versions' }),
+ require('cssnano')(),
+ ],
},
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: [
- 'node_modules/jquery/dist/jquery.js',
- 'node_modules/jquery-ui/jquery-ui.js',
- 'node_modules/materialize-css/bin/materialize.js',
- '<%= appDir %>/themes/_global/js/restoreScroll.js',
- '<%= appDir %>/themes/material/js/init.js'
- ],
- dest: '<%= buildDir %>/material.js'
- },
- jsBaggy: {
- src: [
- 'node_modules/jquery/dist/jquery.js',
- 'node_modules/jquery-ui/jquery-ui.js',
- '<%= 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',
- '<%= appDir %>/themes/baggy/js/saveLink.js'
- ],
- dest: '<%= buildDir %>/baggy.js'
+ separator: ';',
},
cssMaterial: {
src: [
'node_modules/materialize-css/bin/materialize.css',
- '<%= appDir %>/themes/material/css/*.css'
+ '<%= appDir %>/themes/material/css/*.css',
],
- dest: '<%= buildDir %>/material.css'
+ dest: '<%= buildDir %>/material.css',
},
cssBaggy: {
src: [
- '<%= appDir %>/themes/baggy/css/*.css'
+ '<%= appDir %>/themes/baggy/css/*.css',
],
- dest: '<%= buildDir %>/baggy.css'
- }
+ dest: '<%= buildDir %>/baggy.css',
+ },
},
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':
- ['<%= buildDir %>/material.browser.js']
- },
- options: {
- sourceMap: true,
- },
+ '<%= releaseDir %>/themes/material/js/material.min.js':
+ ['<%= buildDir %>/material.browser.js'],
+ }
},
baggy: {
files: {
- '<%= buildDir %>/themes/baggy/js/baggy.min.js':
- ['<%= buildDir %>/baggy.browser.js']
- },
- options: {
- sourceMap: true,
- },
+ '<%= releaseDir %>/themes/baggy/js/baggy.min.js':
+ ['<%= buildDir %>/baggy.browser.js'],
+ }
},
},
copy: {
pickerjs: {
expand: true,
- cwd: 'node_modules/pickadate/lib',
+ cwd: '<%= modulesDir %>/pickadate/lib',
src: 'picker.js',
- dest: '<%= buildDir %>'
+ dest: '<%= buildDir %>',
},
annotator: {
expand: true,
- cwd: 'node_modules/annotator/pkg',
+ cwd: '<%= modulesDir %>/annotator/pkg',
src: 'annotator.min.js',
- dest: '<%= buildDir %>/themes/_global/js/'
- }
- },
- symlink: {
+ dest: '<%= buildDir %>/themes/_global/js/',
+ },
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/',
+ },
+ ],
},
materialfonts: {
files: [
{
expand: true,
overwrite: true,
- cwd: "<%= appDir %>/lib/icomoon-bower/",
- src: "fonts",
- dest: "<%= buildDir %>/themes/material/"
+ cwd: '<%= modulesDir %>/icomoon-free-npm/Font',
+ src: 'IcoMoon-Free.ttf',
+ dest: '<%= releaseDir %>/themes/material/fonts',
},
{
expand: true,
overwrite: true,
- cwd: "node_modules/materialize-css/",
- src: "font",
- dest: "<%= buildDir %>/themes/material"
+ cwd: '<%= modulesDir %>/roboto-fontface/fonts/Roboto',
+ src: '*',
+ dest: '<%= releaseDir %>/themes/material/font/roboto',
},
{
expand: true,
overwrite: true,
- cwd: "<%= appDir %>/lib/roboto-fontface/fonts/",
- src: "*",
- dest: "<%= buildDir %>/themes/material/fonts/roboto/"
+ 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/',
},
- {
- expand: true,
- overwrite: true,
- cwd: "<%= appDir %>/lib/material-design-icons/iconfont/",
- src: "*",
- dest: "<%= buildDir %>/themes/material/fonts/"
- }
- ]
+ ],
},
+ },
+ symlink: {
pics: {
files: [
{
overwrite: true,
cwd: '<%= appDir %>/themes/_global/',
src: 'img',
- dest: '<%= buildDir %>/themes/_global/'
- }
- ]
- }
+ dest: '<%= releaseDir %>/themes/_global/',
+ },
+ ],
+ },
},
clean: {
css: {
- src: [ '<%= buildDir %>/**/*.css' ]
+ src: ['<%= buildDir %>/**/*.css'],
},
js: {
- src: ['<%= buildDir %>/**/*.js', '<%= buildDir %>/**/*.map']
+ src: ['<%= buildDir %>/**/*.js', '<%= buildDir %>/**/*.map'],
},
all: {
- src: ['./<%= buildDir %>']
+ 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(
'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');
+};