Grunt module for Symfony2.
- gruntfile import for src bundles
GitHub: https://github.com/Vitre/grunt-symfony
NPM: https://www.npmjs.org/package/grunt-symfony
$ npm install grunt-symfony
[BUNDLE_ROOT]/Gruntfile.js
module.exports = function (grunt, config, bundle, options) {
config.sass = config.sass || {};
config.sass[bundle.name + "_dist"] = {
"options": {
"style": "compressed",
"compass": true
},
"files": [
{
"expand": true,
"cwd": bundle.resources + "/public/scss",
"src": ["*.scss"],
"dest": options.web + "/admin/@/css",
"ext": ".css"
}
]
};
config.watch = config.watch || {};
config.watch[bundle.name + "_sass"] = {
files: bundle.resources + "/public/scss/**/*.scss",
tasks: ["sass:" + bundle.name + "_dist"]
};
};
/*global module:false*/
// grunt-symfony import
var gruntSymfony = require('grunt-symfony');
module.exports = function (grunt) {
// Base configuration.
var config = {
// Metadata
pkg: grunt.file.readJSON('package.json'),
// [...] Your tasks
};
// Symfony bundles import
gruntSymfony.importBundles(grunt, config, {
web: 'web',
src: 'src',
gruntFile: 'Gruntfile.js',
resources: 'Resources'
});
//---
grunt.initConfig(config);
// Modules
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-sass');
// Tasks
grunt.registerTask('default', ['build', 'watch']);
grunt.registerTask('build', ['sass']);
};
Task stores some information into global grunt config variable. You can use it for custom task creation.
config.symfony: { bundles: {}, dist_tasks: [], dev_tasks: [] }
config.symfony.dev_tasks.push('uglify:' + bundle.name + '_dev');
grunt.registerTask('build', [].concat(['sass'], config.symfony.dist_tasks, ['uglify']));
var gruntSymfony = require('grunt-symfony');
gruntSymfony.importBundles(grunt, config, [options])
Recursively imports bundle Gruntfile.js
Type: String
Default: 'web'
Web folder path.
Type: String
Default: 'src'
Resources path.
Type: String
Default: 'Gruntfile.js'
Bundle Gruntfile filename.
Type: String
Default: 'Resources'
Bundle resources folder name.
Type: String
Bundle name.
Type: String
Bundle name in camelcase.
Type: String
Bundle web name.
Type: String
Bundle path.
Type: String
Bundle resources path.
Type: String
Bundle web path.
- Bundle object new names (
name_dashed
,name_underscore
) - Grunt config
symfony
registryconfig.symfony: { bundles: {...}, dist_tasks: [...], dev_tasks: [...] }