mirror of
https://github.com/wallabag/wallabag.git
synced 2024-12-30 11:30:30 +00:00
230 lines
6.3 KiB
JavaScript
230 lines
6.3 KiB
JavaScript
module.exports = function (grunt) {
|
|
require('load-grunt-tasks')(grunt);
|
|
|
|
grunt.initConfig({
|
|
appDir: 'app/Resources/static',
|
|
buildDir: 'app/Resources/build',
|
|
modulesDir: 'node_modules',
|
|
releaseDir: 'web/bundles/wallabagcore',
|
|
|
|
postcss: {
|
|
material: {
|
|
options: {
|
|
processors: [
|
|
require('pixrem')(),
|
|
require('autoprefixer')({ browsers: 'last 2 versions' }),
|
|
require('cssnano')(),
|
|
],
|
|
},
|
|
src: '<%= buildDir %>/material.css',
|
|
dest: '<%= releaseDir %>/themes/material/css/style.min.css',
|
|
},
|
|
baggy: {
|
|
options: {
|
|
processors: [
|
|
require('pixrem')(),
|
|
require('autoprefixer')({ browsers: 'last 2 versions' }),
|
|
require('cssnano')(),
|
|
],
|
|
},
|
|
src: '<%= buildDir %>/baggy.css',
|
|
dest: '<%= releaseDir %>/themes/baggy/css/style.min.css',
|
|
},
|
|
},
|
|
concat: {
|
|
options: {
|
|
separator: ';',
|
|
},
|
|
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: {
|
|
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: {
|
|
'<%= releaseDir %>/themes/material/js/material.min.js':
|
|
['<%= buildDir %>/material.browser.js'],
|
|
}
|
|
},
|
|
baggy: {
|
|
files: {
|
|
'<%= releaseDir %>/themes/baggy/js/baggy.min.js':
|
|
['<%= buildDir %>/baggy.browser.js'],
|
|
}
|
|
},
|
|
},
|
|
copy: {
|
|
pickerjs: {
|
|
expand: true,
|
|
cwd: '<%= modulesDir %>/pickadate/lib',
|
|
src: 'picker.js',
|
|
dest: '<%= buildDir %>',
|
|
},
|
|
annotator: {
|
|
expand: true,
|
|
cwd: '<%= modulesDir %>/annotator/pkg',
|
|
src: 'annotator.min.js',
|
|
dest: '<%= buildDir %>/themes/_global/js/',
|
|
},
|
|
baggyfonts: {
|
|
files: [
|
|
{
|
|
expand: true,
|
|
cwd: '<%= modulesDir %>/icomoon-free-npm/Font',
|
|
src: 'IcoMoon-Free.ttf',
|
|
dest: '<%= releaseDir %>/themes/baggy/fonts/',
|
|
},
|
|
{
|
|
expand: true,
|
|
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: '<%= modulesDir %>/icomoon-free-npm/Font',
|
|
src: 'IcoMoon-Free.ttf',
|
|
dest: '<%= releaseDir %>/themes/material/fonts',
|
|
},
|
|
{
|
|
expand: true,
|
|
overwrite: true,
|
|
cwd: '<%= modulesDir %>/roboto-fontface/fonts/Roboto',
|
|
src: '*',
|
|
dest: '<%= releaseDir %>/themes/material/font/roboto',
|
|
},
|
|
{
|
|
expand: true,
|
|
overwrite: 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/material/fonts/',
|
|
},
|
|
],
|
|
},
|
|
},
|
|
symlink: {
|
|
pics: {
|
|
files: [
|
|
{
|
|
expand: true,
|
|
overwrite: true,
|
|
cwd: '<%= appDir %>/themes/_global/',
|
|
src: 'img',
|
|
dest: '<%= releaseDir %>/themes/_global/',
|
|
},
|
|
],
|
|
},
|
|
},
|
|
clean: {
|
|
css: {
|
|
src: ['<%= buildDir %>/**/*.css'],
|
|
},
|
|
js: {
|
|
src: ['<%= buildDir %>/**/*.js', '<%= buildDir %>/**/*.map'],
|
|
},
|
|
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',
|
|
['copy:baggyfonts', 'copy:materialfonts']
|
|
);
|
|
|
|
grunt.registerTask(
|
|
'js',
|
|
'Build and install js files',
|
|
['clean:js', 'copy:pickerjs', 'browserify', 'uglify']
|
|
);
|
|
|
|
grunt.registerTask(
|
|
'default',
|
|
'Build and install everything',
|
|
['clean', 'copy:pickerjs', 'concat', 'browserify', 'uglify', 'postcss', 'copy', 'symlink']
|
|
);
|
|
|
|
grunt.registerTask(
|
|
'css',
|
|
'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');
|
|
};
|