1
0
mirror of synced 2024-11-23 05:26:10 +03:00
select2/Gruntfile.js

193 lines
4.2 KiB
JavaScript
Raw Normal View History

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'
]
},
2014-09-21 23:21:43 +04:00
jshint: {
options: {
jshintrc: true
},
code: {
2014-11-01 02:10:38 +03:00
src: ['src/js/**/*.js']
2014-09-21 23:21:43 +04:00
},
tests: {
2014-11-01 02:10:38 +03:00
src: ['tests/**/*.js']
2014-09-21 23:21:43 +04:00
}
},
sass: {
dist: {
options: {
2014-11-01 02:10:38 +03:00
outputStyle: 'compressed'
},
files: {
2014-11-01 02:10:38 +03:00
'dist/css/select2.min.css': [
'src/scss/core.scss',
'src/scss/theme/default/layout.css'
]
}
},
dev: {
options: {
2014-11-01 02:10:38 +03:00
outputStyle: 'nested'
},
files: {
2014-11-01 02:10:38 +03:00
'dist/css/select2.css': [
'src/scss/core.scss',
'src/scss/theme/default/layout.css'
]
}
}
},
requirejs: {
2014-11-01 02:10:38 +03:00
'dist': {
options: {
2014-11-01 02:10:38 +03:00
baseUrl: 'src/js',
optimize: 'none',
name: 'select2/core',
out: 'dist/js/select2.js',
include: amdIncludes.concat(includes),
paths: {
2014-11-01 02:10:38 +03:00
almond: '../../vendor/almond-0.2.9',
jquery: 'jquery.shim'
},
wrap: grunt.file.readJSON('src/js/banner.json')
}
},
2014-11-01 02:10:38 +03:00
'dist.full': {
options: {
2014-11-01 02:10:38 +03:00
baseUrl: 'src/js',
optimize: 'none',
name: 'select2/core',
out: 'dist/js/select2.full.js',
include: amdIncludes.concat(fullIncludes),
paths: {
2014-11-01 02:10:38 +03:00
almond: '../../vendor/almond-0.2.9',
jquery: '../../vendor/jquery-2.1.0'
},
wrap: grunt.file.readJSON('src/js/banner.json')
}
},
2014-11-01 02:10:38 +03:00
'amd': {
options: {
2014-11-01 02:10:38 +03:00
baseUrl: 'src/js',
optimize: 'none',
name: 'select2/core',
out: 'dist/js/select2.amd.js',
include: includes,
paths: {
2014-11-01 02:10:38 +03:00
jquery: 'empty:'
},
wrap: grunt.file.readJSON('src/js/banner.json')
}
},
2014-11-01 02:10:38 +03:00
'amd.full': {
options: {
2014-11-01 02:10:38 +03:00
baseUrl: 'src/js',
optimize: 'none',
name: 'select2/core',
out: 'dist/js/select2.amd.full.js',
include: fullIncludes,
paths: {
2014-11-01 02:10:38 +03:00
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: [
2014-11-01 02:10:38 +03:00
'src/js/select2/**/*.js',
'tests/**/*.js'
],
tasks: [
2014-11-01 02:10:38 +03:00
'compile',
'test',
2014-10-11 06:17:51 +04:00
'minify'
]
},
css: {
files: [
2014-11-01 02:10:38 +03:00
'src/scss/**/*.scss'
],
tasks: [
2014-11-01 02:10:38 +03:00
'compile',
2014-10-11 06:17:51 +04:00
'minify'
]
}
}
});
2014-11-01 02:10:38 +03:00
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');
2014-11-01 02:10:38 +03:00
grunt.loadNpmTasks('grunt-sass');
2014-11-01 02:10:38 +03:00
grunt.registerTask('default', ['compile', 'test', 'minify']);
grunt.registerTask('compile', ['requirejs', 'sass:dev']);
2014-11-01 02:10:38 +03:00
grunt.registerTask('minify', ['uglify', 'sass:dist']);
grunt.registerTask('test', ['qunit', 'jshint']);
};