Add grunt build-assets task

This commit is contained in:
Nicolas Le Goff
2013-08-12 17:59:13 +02:00
parent 341bb887e4
commit 74fc121fb6
11 changed files with 314 additions and 83 deletions

View File

@@ -1,3 +1,3 @@
{
"directory" : "www/assets"
"directory" : "assets"
}

1
.gitignore vendored
View File

@@ -15,4 +15,5 @@ composer.phar
behat.yml
/datas
/www/assets
/assets
/www/skins/build

228
Gruntfile.js Normal file
View File

@@ -0,0 +1,228 @@
module.exports = function(grunt) {
grunt.initConfig({
clean: {
"assets": ["assets", "www/assets"],
},
bower: {
install: {
options: {
"copy": false
}
}
},
bower_postinst: {
dist: {
options: {
components: {
"jquery.ui": ["npm", {"grunt": "build"}],
"bootstrap": ["npm", {"make": "bootstrap"}]
}
}
}
},
copy: {
"backbone": {
"expand": true,
"src": [
"assets/backbone-amd/LICENSE",
"assets/backbone-amd/backbone.js"
],
"dest": "www/assets/backbone-amd/",
"flatten": true
},
"blueimp": {
"expand": true,
"src": ["js/load-image.js", "css/jquery.fileupload-ui.css"],
"dest": "www/assets/blueimp-load-image/",
"cwd": "assets/blueimp-load-image"
},
"bootstrap": {
"expand": true,
"cwd": "assets/bootstrap",
"src": [
"bootstrap/css/*",
"bootstrap/js/*",
"bootstrap/img/*",
"LICENSE"
],
"rename": function(dest, src) {
return dest + src.replace("bootstrap", "");
},
"dest": "www/assets/bootstrap/"
},
"bootstrap-multiselect": {
"expand": true,
"cwd": "assets/bootstrap-multiselect",
"src": [
"css/bootstrap-multiselect.css",
"js/bootstrap-multiselect.js",
],
"dest": "www/assets/bootstrap-multiselect/"
},
"chai": {
"expand": true,
"src": "assets/chai/chai.js",
"dest": "www/assets/chai/",
"flatten": true
},
"font-awesome": {
"expand": true,
"cwd": "assets/font-awesome",
"src": ["css/*", "font/*"],
"dest": "www/assets/font-awesome/"
},
"geonames-server-jquery-plugin": {
"expand": true,
"flatten": true,
"src": [
"assets/geonames-server-jquery-plugin/LICENSE",
"assets/geonames-server-jquery-plugin/jquery.geonames.js"
],
"dest": "www/assets/geonames-server-jquery-plugin"
}
,
"humane-js": {
"expand": true,
"src": ["humane.js", "themes/libnotify.css"],
"dest": "www/assets/humane-js/",
"cwd": "assets/humane-js/"
},
"i18next": {
"expand": true,
"src": "assets/i18next/release/i18next.amd-1.6.3.js",
"dest": "www/assets/i18next/",
"flatten": true
},
"jquery": {
"expand": true,
"src": "assets/jquery/jquery.js",
"dest": "www/assets/jquery/",
"flatten": true
},
"jquery-file-upload": {
"expand": true,
"src": [
"assets/jquery-file-upload/js/jquery.fileupload.js",
"assets/jquery-file-upload/js/jquery.iframe-transport.js"
],
"dest": "www/assets/jquery-file-upload/",
"flatten": true
},
"jquery-ui": {
"expand": true,
"cwd": "assets/jquery.ui/dist",
"src": [
"i18n/*",
"images/*",
"themes/*",
"jquery-ui.css",
"jquery-ui.js"
],
"dest": "www/assets/jquery.ui/"
},
"js-fixture": {
"expand": true,
"src": [
"assets/js-fixtures/LICENSE",
"assets/js-fixtures/fixtures.js"
],
"dest": "www/assets/js-fixture/",
"flatten": true
},
"json3": {
"expand": true,
"src": [
"assets/json3/LICENSE",
"assets/json3/lib/json3.js"
],
"dest": "www/assets/json3/",
"flatten": true
},
"mocha": {
"expand": true,
"src": [
"assets/mocha/LICENSE",
"assets/mocha/mocha.js",
"assets/mocha/mocha.css"
],
"dest": "www/assets/mocha/",
"flatten": true
},
"modernizr": {
"expand": true,
"src": "assets/modernizr/modernizr.js",
"dest": "www/assets/modernizr/",
"flatten": true
},
"normalize": {
"expand": true,
"src": [
"assets/normalize-css/normalize.css",
"assets/normalize-css/LICENSE.md"
],
"dest": "www/assets/normalize-css/",
"flatten": true
},
"qunit": {
"expand": true,
"src": [
"assets/qunit/qunit/qunit.css",
"assets/qunit/qunit/qunit.js"
],
"dest": "www/assets/qunit/",
"flatten": true
},
"requirejs": {
"expand": true,
"src": [
"assets/requirejs/LICENSE",
"assets/requirejs/require.js"
],
"dest": "www/assets/requirejs/",
"flatten": true
},
"underscore": {
"expand": true,
"src": [
"assets/underscore-amd/LICENSE",
"assets/underscore-amd/underscore.js"
],
"dest": "www/assets/underscore-amd/",
"flatten": true
},
"zxcvbn": {
"expand": true,
"src": [
"assets/zxcvbn/LICENSE.txt",
"assets/zxcvbn/zxcvbn-async.js"
],
"dest": "www/assets/zxcvbn",
"flatten": true
}
},
less: {
login: {
options: {
paths: ["www/skins/login/less"],
},
files: {
"www/assets/build/login.css": "www/skins/login/less/login.less"
}
},
account: {
options: {
paths: ["www/skins/account"],
},
files: {
"www/assets/build/account.css": "www/skins/account/account.less"
}
},
}
});
grunt.loadNpmTasks("grunt-contrib");
grunt.loadNpmTasks("grunt-bower-task");
grunt.loadNpmTasks("grunt-bower-postinst");
grunt.registerTask("build-assets", ["clean:assets", "bower", "bower_postinst", "copy", "less"]);
};

View File

@@ -6,7 +6,6 @@
"jquery": "~1.8.3",
"jquery.ui": "~1.10.0",
"font-awesome": "~3.0.2",
"underscore": "~1.4.4",
"modernizr": "~2.6.2",
"normalize-css" : "~2.1.0",
"json3" : "3.2.4",
@@ -20,8 +19,6 @@
"mocha": "~1.9",
"chai" : "~1.6",
"i18next": "~1.6",
"sinon": "~1.7",
"sinon-chai": "~2.4",
"js-fixtures": "https://github.com/badunk/js-fixtures/archive/master.zip",
"bootstrap-multiselect": "https://github.com/davidstutz/bootstrap-multiselect.git",
"zxcvbn" : "https://github.com/lowe/zxcvbn.git",

View File

@@ -93,6 +93,7 @@ $finder
->name('sinon-chai')
->name('js-fixtures')
->name('node_modules')
->name('assets')
->ignoreDotFiles(false)
->ignoreVCS(false)
->in(__DIR__);

View File

@@ -46,9 +46,9 @@ $groups = array(
, '//include/jquery.common.js'
, '//include/jquery.tooltip.js'
, '//include/jslibs/jquery.contextmenu_scroll.js'
, '//assets/blueimp-load-image/js/load-image.js'
, '//assets/jquery-file-upload/js/jquery.iframe-transport.js'
, '//assets/jquery-file-upload/js/jquery.fileupload.js'
, '//assets/blueimp-load-image/load-image.js'
, '//assets/jquery-file-upload/jquery.iframe-transport.js'
, '//assets/jquery-file-upload/jquery.fileupload.js'
),
'report' => array(
'//include/jslibs/jquery-ui-1.10.3/jquery-ui-i18n.js'
@@ -76,9 +76,9 @@ $groups = array(
, '//include/jslibs/jquery.cookie.js'
, '//include/jquery.common.js'
, '//assets/humane-js/humane.js'
, '//assets/blueimp-load-image/js/load-image.js'
, '//assets/jquery-file-upload/js/jquery.iframe-transport.js'
, '//assets/jquery-file-upload/js/jquery.fileupload.js'
, '//assets/blueimp-load-image/load-image.js'
, '//assets/jquery-file-upload/jquery.iframe-transport.js'
, '//assets/jquery-file-upload/jquery.fileupload.js'
, '//include/jslibs/jquery.form.2.49.js'
, '//include/jslibs/jquery.vertical.buttonset.js'
, '//include/js/jquery.Selection.js'

View File

@@ -6,6 +6,10 @@
"mocha-phantomjs": ">=2.0 <3.0",
"recess": ">=1.1.0 <1.1.7",
"uglify-js": "latest",
"phantomjs": "latest"
"phantomjs": "latest",
"grunt": "~0.4.1",
"grunt-contrib": "latest",
"grunt-bower-task": "latest",
"grunt-bower-postinst": "latest"
}
}

View File

@@ -12,7 +12,7 @@
<!--[if lte IE 8]>
<link rel="stylesheet" href="{{ path('minifier', { 'f' : 'assets/font-awesome/css/font-awesome-ie7.min.css' }) }}">
<script type="text/javascript" src="{{ path('minifier', {'f' : 'assets/json3/lib/json3.js'}) }}"></script>
<script type="text/javascript" src="{{ path('minifier', {'f' : 'assets/json3/json3.js'}) }}"></script>
<![endif]-->
<script type="text/javascript" src="{{ path('minifier', { 'f' : 'assets/jquery/jquery.js' }) }}"></script>

View File

@@ -36,7 +36,7 @@
{% block header_javascript %}
<!--[if lte IE 8]>
<script type="text/javascript" src="{{ path('minifier', {'f' : 'assets/json3/lib/json3.js'}) }}"></script>
<script type="text/javascript" src="{{ path('minifier', {'f' : 'assets/json3/json3.js'}) }}"></script>
<![endif]-->
{# include backbone templates #}

View File

@@ -1,61 +1,61 @@
// CSS Reset
@import "../../assets/bootstrap/less/reset.less";
@import "../../../assets/bootstrap/less/reset.less";
// Core variables and mixins
@import "../../assets/bootstrap/less/variables.less";
@import "../../../assets/bootstrap/less/variables.less";
@import "variables.less";
@import "../../../plugins/account.less";
@import "../../assets/bootstrap/less/mixins.less";
@import "../../../assets/bootstrap/less/mixins.less";
// Grid system and page structure
@import "../../assets/bootstrap/less/scaffolding.less";
@import "../../assets/bootstrap/less/grid.less";
@import "../../assets/bootstrap/less/layouts.less";
@import "../../../assets/bootstrap/less/scaffolding.less";
@import "../../../assets/bootstrap/less/grid.less";
@import "../../../assets/bootstrap/less/layouts.less";
// Base CSS
@import "../../assets/bootstrap/less/type.less";
@import "../../assets/bootstrap/less/code.less";
@import "../../assets/bootstrap/less/forms.less";
@import "../../assets/bootstrap/less/tables.less";
@import "../../../assets/bootstrap/less/type.less";
@import "../../../assets/bootstrap/less/code.less";
@import "../../../assets/bootstrap/less/forms.less";
@import "../../../assets/bootstrap/less/tables.less";
// Components: common
@import "../../assets/bootstrap/less/sprites.less";
@import "../../assets/bootstrap/less/dropdowns.less";
@import "../../assets/bootstrap/less/wells.less";
@import "../../assets/bootstrap/less/component-animations.less";
@import "../../assets/bootstrap/less/close.less";
@import "../../../assets/bootstrap/less/sprites.less";
@import "../../../assets/bootstrap/less/dropdowns.less";
@import "../../../assets/bootstrap/less/wells.less";
@import "../../../assets/bootstrap/less/component-animations.less";
@import "../../../assets/bootstrap/less/close.less";
// Components: Buttons & Alerts
@import "../../assets/bootstrap/less/buttons.less";
@import "../../assets/bootstrap/less/button-groups.less";
@import "../../assets/bootstrap/less/alerts.less"; // Note: alerts share common CSS with buttons and thus have styles in buttons.less
@import "../../../assets/bootstrap/less/buttons.less";
@import "../../../assets/bootstrap/less/button-groups.less";
@import "../../../assets/bootstrap/less/alerts.less"; // Note: alerts share common CSS with buttons and thus have styles in buttons.less
// Components: Nav
@import "../../assets/bootstrap/less/navs.less";
@import "../../assets/bootstrap/less/navbar.less";
@import "../../assets/bootstrap/less/breadcrumbs.less";
@import "../../assets/bootstrap/less/pagination.less";
@import "../../assets/bootstrap/less/pager.less";
@import "../../../assets/bootstrap/less/navs.less";
@import "../../../assets/bootstrap/less/navbar.less";
@import "../../../assets/bootstrap/less/breadcrumbs.less";
@import "../../../assets/bootstrap/less/pagination.less";
@import "../../../assets/bootstrap/less/pager.less";
// Components: Popovers
@import "../../assets/bootstrap/less/modals.less";
@import "../../assets/bootstrap/less/tooltip.less";
@import "../../assets/bootstrap/less/popovers.less";
@import "../../../assets/bootstrap/less/modals.less";
@import "../../../assets/bootstrap/less/tooltip.less";
@import "../../../assets/bootstrap/less/popovers.less";
// Components: Misc
@import "../../assets/bootstrap/less/thumbnails.less";
@import "../../assets/bootstrap/less/media.less";
@import "../../assets/bootstrap/less/labels-badges.less";
@import "../../assets/bootstrap/less/progress-bars.less";
@import "../../assets/bootstrap/less/accordion.less";
@import "../../assets/bootstrap/less/carousel.less";
@import "../../assets/bootstrap/less/hero-unit.less";
@import "../../../assets/bootstrap/less/thumbnails.less";
@import "../../../assets/bootstrap/less/media.less";
@import "../../../assets/bootstrap/less/labels-badges.less";
@import "../../../assets/bootstrap/less/progress-bars.less";
@import "../../../assets/bootstrap/less/accordion.less";
@import "../../../assets/bootstrap/less/carousel.less";
@import "../../../assets/bootstrap/less/hero-unit.less";
// Utility classes
@import "../../assets/bootstrap/less/utilities.less"; // Has to be last to override when necessary
@import "../../../assets/bootstrap/less/utilities.less"; // Has to be last to override when necessary
// Responsive
@import "../../assets/bootstrap/less/responsive.less";
@import "../../../assets/bootstrap/less/responsive.less";
@import "variables.less";
@import "../../../plugins/account.less";

View File

@@ -1,63 +1,63 @@
// CSS Reset
@import "../../../assets/bootstrap/less/reset.less";
@import "../../../../assets/bootstrap/less/reset.less";
// Core variables and mixins
@import "../../../assets/bootstrap/less/variables.less";
@import "../../../../assets/bootstrap/less/variables.less";
@import "variables.less";
@import "../../../../plugins/login.less";
@import "../../../assets/bootstrap/less/mixins.less";
@import "../../../../assets/bootstrap/less/mixins.less";
// Grid system and page structure
@import "../../../assets/bootstrap/less/scaffolding.less";
@import "../../../assets/bootstrap/less/grid.less";
@import "../../../assets/bootstrap/less/layouts.less";
@import "../../../../assets/bootstrap/less/scaffolding.less";
@import "../../../../assets/bootstrap/less/grid.less";
@import "../../../../assets/bootstrap/less/layouts.less";
// Base CSS
@import "../../../assets/bootstrap/less/type.less";
@import "../../../assets/bootstrap/less/code.less";
@import "../../../assets/bootstrap/less/forms.less";
@import "../../../assets/bootstrap/less/tables.less";
@import "../../../../assets/bootstrap/less/type.less";
@import "../../../../assets/bootstrap/less/code.less";
@import "../../../../assets/bootstrap/less/forms.less";
@import "../../../../assets/bootstrap/less/tables.less";
// Components: common
@import "../../../assets/bootstrap/less/sprites.less";
@import "../../../assets/bootstrap/less/dropdowns.less";
@import "../../../assets/bootstrap/less/wells.less";
@import "../../../assets/bootstrap/less/component-animations.less";
@import "../../../assets/bootstrap/less/close.less";
@import "../../../../assets/bootstrap/less/sprites.less";
@import "../../../../assets/bootstrap/less/dropdowns.less";
@import "../../../../assets/bootstrap/less/wells.less";
@import "../../../../assets/bootstrap/less/component-animations.less";
@import "../../../../assets/bootstrap/less/close.less";
// Components: Buttons & Alerts
@import "../../../assets/bootstrap/less/buttons.less";
@import "../../../assets/bootstrap/less/button-groups.less";
@import "../../../assets/bootstrap/less/alerts.less"; // Note: alerts share common CSS with buttons and thus have styles in buttons.less
@import "../../../../assets/bootstrap/less/buttons.less";
@import "../../../../assets/bootstrap/less/button-groups.less";
@import "../../../../assets/bootstrap/less/alerts.less"; // Note: alerts share common CSS with buttons and thus have styles in buttons.less
// Components: Nav
@import "../../../assets/bootstrap/less/navs.less";
@import "../../../assets/bootstrap/less/navbar.less";
@import "../../../assets/bootstrap/less/breadcrumbs.less";
@import "../../../assets/bootstrap/less/pagination.less";
@import "../../../assets/bootstrap/less/pager.less";
@import "../../../../assets/bootstrap/less/navs.less";
@import "../../../../assets/bootstrap/less/navbar.less";
@import "../../../../assets/bootstrap/less/breadcrumbs.less";
@import "../../../../assets/bootstrap/less/pagination.less";
@import "../../../../assets/bootstrap/less/pager.less";
// Components: Popovers
@import "../../../assets/bootstrap/less/modals.less";
@import "../../../assets/bootstrap/less/tooltip.less";
@import "../../../assets/bootstrap/less/popovers.less";
@import "../../../../assets/bootstrap/less/modals.less";
@import "../../../../assets/bootstrap/less/tooltip.less";
@import "../../../../assets/bootstrap/less/popovers.less";
// Components: Misc
@import "../../../assets/bootstrap/less/thumbnails.less";
@import "../../../assets/bootstrap/less/media.less";
@import "../../../assets/bootstrap/less/labels-badges.less";
@import "../../../assets/bootstrap/less/progress-bars.less";
@import "../../../assets/bootstrap/less/accordion.less";
@import "../../../assets/bootstrap/less/carousel.less";
@import "../../../assets/bootstrap/less/hero-unit.less";
@import "../../../../assets/bootstrap/less/thumbnails.less";
@import "../../../../assets/bootstrap/less/media.less";
@import "../../../../assets/bootstrap/less/labels-badges.less";
@import "../../../../assets/bootstrap/less/progress-bars.less";
@import "../../../../assets/bootstrap/less/accordion.less";
@import "../../../../assets/bootstrap/less/carousel.less";
@import "../../../../assets/bootstrap/less/hero-unit.less";
// Utility classes
@import "../../../assets/bootstrap/less/utilities.less"; // Has to be last to override when necessary
@import "../../../../assets/bootstrap/less/utilities.less"; // Has to be last to override when necessary
// Responsive
@import "../../../assets/bootstrap/less/responsive.less";
@import "../../../../assets/bootstrap/less/responsive.less";
@import "variables.less";
@import "../../../../plugins/login.less";