select2-bootstrap-theme
Version:
A theme for Select2 v4 and Bootstrap 3.
225 lines (208 loc) • 5.3 kB
JavaScript
module.exports = function(grunt) {
// Load all grunt tasks.
require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);
// Project configuration.
grunt.initConfig({
package: grunt.file.readJSON('package.json'),
nodeunit: {
all: ['tests/*_test.js']
},
sass: {
options: {
outputStyle: 'expanded',
sourcemap: 'none',
// Increase Sass' number "precision" to 8 to match Less output.
//
// @see https://github.com/twbs/bootstrap-sass#sass-number-precision
// @see https://github.com/sass/node-sass/issues/673#issue-57581701
// @see https://github.com/sass/sass/issues/1122
precision: 8
},
dist: {
files: {
'dist/select2-bootstrap.css': 'src/build.scss'
}
},
test: {
files: {
'tmp/select2-bootstrap.css': 'src/build.scss'
}
}
},
cssmin: {
target: {
files: {
'dist/select2-bootstrap.min.css': 'dist/select2-bootstrap.css'
}
}
},
jshint: {
all: ['Gruntfile.js', '*.json']
},
bump: {
options: {
files: [
'package.json'
],
push: false,
createTag: false,
commit: false
}
},
copy: {
main: {
files: [
{
src: 'node_modules/bootstrap/dist/css/bootstrap.min.css',
dest: 'docs/css/bootstrap.min.css'
},
{
src: 'node_modules/bootstrap/dist/js/bootstrap.min.js',
dest: 'docs/js/bootstrap.min.js'
},
{
expand: true,
cwd: 'node_modules/bootstrap/dist/fonts',
src: ['**/*'],
dest: 'docs/fonts'
},
{
src: 'node_modules/Respond.js/dest/respond.min.js',
dest: 'docs/js/respond.min.js'
},
{
src: 'node_modules/anchor-js/anchor.min.js',
dest: 'docs/js/anchor.min.js'
},
{
src: 'dist/select2-bootstrap.css',
dest: 'tmp/select2-bootstrap.css'
},
{
src: 'dist/select2-bootstrap.css',
dest: 'docs/css/select2-bootstrap.css'
},
{
src: 'dist/select2-bootstrap.css',
dest: 'docs/_site/css/select2-bootstrap.css'
}
]
}
},
'gh-pages': {
options: {
base: 'docs/_site',
message: 'Update gh-pages.'
},
src: ['**/*']
},
jekyll: {
options: {
src: 'docs',
dest: 'docs/_site',
sourcemaps: false
},
build: {
d: null
}
},
watch: {
sass: {
files: 'src/select2-bootstrap.scss',
tasks: ['buildTheme']
},
jekyll: {
files: ['docs/_layouts/*.html', 'docs/_includes/*.html', '*.html'],
tasks: ['jekyll']
}
},
browserSync: {
files: {
src : ['docs/_site/css/*.css']
},
options: {
watchTask: true,
ghostMode: {
clicks: true,
scroll: true,
links: true,
forms: true
},
server: {
baseDir: 'docs/_site'
}
}
},
postcss: {
options: {
map: false,
processors: [
// Autoprefixer browser settings as required by Bootstrap
//
// @see https://github.com/twbs/bootstrap-sass#sass-autoprefixer
require('autoprefixer')({browsers: [
"Android 2.3",
"Android >= 4",
"Chrome >= 20",
"Firefox >= 24",
"Explorer >= 8",
"iOS >= 6",
"Opera >= 12",
"Safari >= 6"
]})
]
},
dist: {
src: [
'dist/select2-bootstrap.css'
]
},
test: {
src: [
'tmp/select2-bootstrap.css'
]
}
},
scss2less: {
convert: {
files: [{
src: 'src/select2-bootstrap.scss',
dest: 'src/select2-bootstrap.less'
}]
}
},
// Only used to generate CSS for the tests.
less: {
test: {
options: {
sourceMap: false
},
src: 'src/build.less',
dest: 'tmp/select2-bootstrap.css'
}
},
stamp: {
options: {
banner: '/*!\n' +
' * Select2 Bootstrap Theme v<%= package.version %> (<%= package.homepage %>)\n' +
' * Copyright 2015-<%= grunt.template.today("yyyy") %> <%= package.author %> and contributors (https://github.com/select2/select2-bootstrap-theme/graphs/contributors)\n' +
' * Licensed under MIT (https://github.com/select2/select2-bootstrap-theme/blob/master/LICENSE)\n' +
' */\n'
},
dist: {
files: {
src: 'dist/*'
}
},
test: {
files: {
src: 'tmp/*'
}
}
}
});
// Default tasks.
grunt.registerTask('buildTheme', ['sass', 'postcss', 'cssmin', 'stamp', 'copy'])
grunt.registerTask('build', ['buildTheme', 'jekyll:build']);
grunt.registerTask('serve', ['buildTheme', 'build', 'browserSync', 'watch']);
};