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' }),
],
},
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' }),
],
},
src: '<%= buildDir %>/baggy.css',
- dest: '<%= buildDir %>/themes/baggy/css/style.min.css',
+ dest: '<%= releaseDir %>/themes/baggy/css/style.min.css',
},
},
concat: {
transform: [
["babelify", {
presets: ["es2015"]
- }], "browserify-shim"
+ }], ["browserify-shim", {
+ "jquery": {
+ "exports": "$"
+ },
+ "materialize": "materialize",
+ "jquery-ui": {
+ "depends": "jquery",
+ "exports": null
+ }
+ }]
],
browserifyOptions: {
browser: {
"jQuery": "./node_modules/jquery/dist/jquery.js",
- "jquery.tinydot": "./nodes_modules/jquery.tinydot/src/jquery.tinydot.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/',
},
],
},
{
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: [
{
overwrite: true,
cwd: '<%= appDir %>/themes/_global/',
src: 'img',
- dest: '<%= buildDir %>/themes/_global/',
+ dest: '<%= releaseDir %>/themes/_global/',
},
],
},
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(
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');
};