123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- module.exports = function (grunt) {
- // Full list of files that must be included by RequireJS
- includes = [
- 'jquery.select2'
- ];
- amdIncludes = [
- 'almond'
- ];
- fullIncludes = [
- 'jquery'
- ].concat(includes);
- var i18nModules = [];
- var i18nPaths = {};
- var i18nFiles = grunt.file.expand({
- cwd: 'src/js'
- }, 'select2/i18n/*.js');
- for (var i = 0; i < i18nFiles.length; i++) {
- var file = i18nFiles[i];
- var name = file.split('.')[0];
- i18nModules.push({
- name: name
- });
- i18nPaths[name] = '../../' + name;
- }
- grunt.initConfig({
- uglify: {
- 'dist': {
- src: 'dist/js/select2.js',
- dest: 'dist/js/select2.min.js'
- },
- 'dist.full': {
- src: 'dist/js/select2.full.js',
- dest: 'dist/js/select2.full.min.js'
- }
- },
- qunit: {
- all: [
- 'tests/**/*.html'
- ]
- },
- jshint: {
- options: {
- jshintrc: true
- },
- code: {
- src: ['src/js/**/*.js']
- },
- tests: {
- src: ['tests/**/*.js']
- }
- },
- sass: {
- dist: {
- options: {
- outputStyle: 'compressed'
- },
- files: {
- 'dist/css/select2.min.css': [
- 'src/scss/core.scss',
- 'src/scss/theme/default/layout.css'
- ]
- }
- },
- dev: {
- options: {
- outputStyle: 'nested'
- },
- files: {
- 'dist/css/select2.css': [
- 'src/scss/core.scss',
- 'src/scss/theme/default/layout.css'
- ]
- }
- }
- },
- requirejs: {
- 'dist': {
- options: {
- baseUrl: 'src/js',
- optimize: 'none',
- name: 'select2/core',
- out: 'dist/js/select2.js',
- include: amdIncludes.concat(includes),
- paths: {
- almond: '../../vendor/almond-0.2.9',
- jquery: 'jquery.shim'
- },
- wrap: grunt.file.readJSON('src/js/banner.json')
- }
- },
- 'dist.full': {
- options: {
- baseUrl: 'src/js',
- optimize: 'none',
- name: 'select2/core',
- out: 'dist/js/select2.full.js',
- include: amdIncludes.concat(fullIncludes),
- paths: {
- almond: '../../vendor/almond-0.2.9',
- jquery: '../../vendor/jquery-2.1.0'
- },
- wrap: grunt.file.readJSON('src/js/banner.json')
- }
- },
- 'amd': {
- options: {
- baseUrl: 'src/js',
- optimize: 'none',
- name: 'select2/core',
- out: 'dist/js/select2.amd.js',
- include: includes,
- paths: {
- jquery: 'empty:'
- },
- wrap: grunt.file.readJSON('src/js/banner.json')
- }
- },
- 'amd.full': {
- options: {
- baseUrl: 'src/js',
- optimize: 'none',
- name: 'select2/core',
- out: 'dist/js/select2.amd.full.js',
- include: fullIncludes,
- paths: {
- jquery: 'empty:'
- },
- wrap: grunt.file.readJSON('src/js/banner.json')
- }
- },
- 'i18n': {
- options: {
- baseUrl: 'src/js/select2/i18n',
- dir: 'dist/js/i18n',
- paths: i18nPaths,
- modules: i18nModules,
- wrap: grunt.file.readJSON('src/js/banner.json')
- }
- }
- },
- watch: {
- js: {
- files: [
- 'src/js/select2/**/*.js',
- 'tests/**/*.js'
- ],
- tasks: [
- 'compile',
- 'test',
- 'minify'
- ]
- },
- css: {
- files: [
- 'src/scss/**/*.scss'
- ],
- tasks: [
- 'compile',
- 'minify'
- ]
- }
- }
- });
- grunt.loadNpmTasks('grunt-contrib-concat');
- grunt.loadNpmTasks('grunt-contrib-jshint');
- grunt.loadNpmTasks('grunt-contrib-qunit');
- grunt.loadNpmTasks('grunt-contrib-requirejs');
- grunt.loadNpmTasks('grunt-contrib-uglify');
- grunt.loadNpmTasks('grunt-contrib-watch');
- grunt.loadNpmTasks('grunt-sass');
- grunt.registerTask('default', ['compile', 'test', 'minify']);
- grunt.registerTask('compile', ['requirejs', 'sass:dev']);
- grunt.registerTask('minify', ['uglify', 'sass:dist']);
- grunt.registerTask('test', ['qunit', 'jshint']);
- };
|