This repository has been archived on 2023-02-21. You can view files and clone it, but cannot push or open issues or pull requests.
perso-hebdo/js/pickadate.js-3.5.3/Gruntfile.js

276 lines
9.0 KiB
JavaScript

/*!
* This Gruntfile is used to build the project files.
*/
/*jshint
node: true
*/
module.exports = function( grunt ) {
// Read the package manifest.
var packageJSON = grunt.file.readJSON( 'package.json' )
// Add the “curly” template delimiters.
grunt.template.addDelimiters( 'curly', '{%', '%}' )
// Load the NPM tasks.
grunt.loadNpmTasks( 'grunt-contrib-watch' )
grunt.loadNpmTasks( 'grunt-contrib-jshint' )
grunt.loadNpmTasks( 'grunt-contrib-qunit' )
grunt.loadNpmTasks( 'grunt-contrib-copy' )
grunt.loadNpmTasks( 'grunt-contrib-less' )
grunt.loadNpmTasks( 'grunt-contrib-cssmin' )
grunt.loadNpmTasks( 'grunt-contrib-uglify' )
// Setup the initial configurations.
grunt.initConfig({
// Add the package data.
pkg: packageJSON,
// Set up the directories.
dirs: {
tests: 'tests',
lib: {
src: 'lib',
min: 'lib/compressed'
},
themes: {
src: 'lib/themes-source',
dest: 'lib/themes',
min: 'lib/compressed/themes'
},
translations: {
src: 'lib/translations',
min: 'lib/compressed/translations'
},
docs: {
src: '_docs',
dest: '.'
},
demo: {
images: 'demo/images',
scripts: 'demo/scripts',
styles: {
src: 'demo/styles/less',
dest: 'demo/styles/css'
}
},
},
// Generate static HTML templates.
htmlify: {
docs: {
expand: true,
cwd: '<%= dirs.docs.src %>',
src: [ '/!(base|hero)*.htm' ],
dest: '',
base: '/base.htm'
}
},
// Copy over files to destination directions.
copy: {
pkg: {
options: {
processContent: function( content ) {
return grunt.template.process( content, { delimiters: 'curly' } )
}
},
files: [
{ '<%= pkg.name %>.jquery.json': 'package.json' },
{ 'bower.json': 'package.json' },
{ 'README.md': '<%= dirs.docs.src %>/README.md' },
{ 'LICENSE.md': '<%= dirs.docs.src %>/LICENSE.md' },
{ 'CHANGELOG.md': '<%= dirs.docs.src %>/CHANGELOG.md' },
{ 'CONTRIBUTING.md': '<%= dirs.docs.src %>/CONTRIBUTING.md' }
]
}
},
// Compile LESS into CSS.
less: {
options: {
style: 'expanded'
},
demo: {
files: {
'<%= dirs.demo.styles.dest %>/main.css': '<%= dirs.demo.styles.src %>/base.less'
}
},
themes: {
files: {
'<%= dirs.themes.dest %>/default.css': [ '<%= dirs.themes.src %>/base.less', '<%= dirs.themes.src %>/default.less' ],
'<%= dirs.themes.dest %>/classic.css': [ '<%= dirs.themes.src %>/base.less', '<%= dirs.themes.src %>/classic.less' ],
'<%= dirs.themes.dest %>/default.date.css': [ '<%= dirs.themes.src %>/base.date.less', '<%= dirs.themes.src %>/default.date.less' ],
'<%= dirs.themes.dest %>/default.time.css': [ '<%= dirs.themes.src %>/base.time.less', '<%= dirs.themes.src %>/default.time.less' ],
'<%= dirs.themes.dest %>/classic.date.css': [ '<%= dirs.themes.src %>/base.date.less', '<%= dirs.themes.src %>/classic.date.less' ],
'<%= dirs.themes.dest %>/classic.time.css': [ '<%= dirs.themes.src %>/base.time.less', '<%= dirs.themes.src %>/classic.time.less' ],
'<%= dirs.themes.dest %>/rtl.css': [ '<%= dirs.themes.src %>/rtl.less' ]
}
}
},
// Lint the files.
jshint: {
options: {
jshintrc: true
},
gruntfile: 'Gruntfile.js',
demo: [ '<%= dirs.demo.scripts %>/demo.js' ],
lib: [
'<%= dirs.tests %>/units/*.js',
'<%= dirs.lib.src %>/**/*.js',
// Ignore the legacy and minified files.
'!<%= dirs.lib.src %>/legacy.js',
'!<%= dirs.lib.src %>/compressed/**/*.js'
]
},
// Minify all the things!
uglify: {
options: {
preserveComments: 'some'
},
lib: {
files: [
{
expand : true,
cwd : '<%= dirs.lib.src %>',
src : [ '**/*.js', '!compressed/**/*.js' ],
dest : '<%= dirs.lib.min %>'
}
]
}
},
cssmin: {
lib: {
expand: true,
cwd: '<%= dirs.themes.dest %>',
src: [ '**/*.css', '!compressed/**/*.css' ],
dest: '<%= dirs.themes.min %>'
}
},
// Unit test the files.
qunit: {
lib: [ '<%= dirs.tests %>/units/all.htm' ]
},
// Watch the project files.
watch: {
quick: {
files: [
'<%= dirs.docs.src %>/**/*.htm',
'<%= dirs.docs.src %>/**/*.md',
'<%= dirs.demo.src %>/styles/**/*.less',
'<%= dirs.themes.src %>/**/*.less'
],
tasks: [ 'quick' ]
},
demo: {
files: [
'<%= dirs.demo.styles.src %>/**/*.less'
],
tasks: [ 'demo' ]
},
docs: {
files: [
'<%= dirs.docs.src %>/**/*.htm',
'<%= dirs.docs.src %>/**/*.md'
],
tasks: [ 'docs' ]
},
themes: {
files: [
'<%= dirs.themes.src %>/**/*.less'
],
tasks: [ 'themes' ]
}
},
// Any extra data needed in rendering static files.
meta: {
// The sanitized github repo url.
gitrepo_url: packageJSON.repository.url.replace( /.git$/, '' ),
// Get the min & gzip size of a text file.
fileSize: function( content ) {
return {
min: content.length || 0,
gzip: content ? require( 'zlib-browserify' ).gzipSync( content ).length : 0
}
}
}
}) //grunt.initConfig
// Register the tasks.
// * `htmlify` and `copy:pkg` should come after `uglify` because some package files measure `.min` file sizes.
grunt.registerTask( 'default', [ 'less', 'jshint', 'qunit', 'uglify', 'cssmin', 'htmlify', 'copy:pkg' ] )
grunt.registerTask( 'quick', [ 'less', 'uglify', 'cssmin', 'htmlify', 'copy:pkg' ] )
grunt.registerTask( 'themes', [ 'less:themes' ] )
grunt.registerTask( 'demo', [ 'less:demo', 'jshint:demo' ] )
grunt.registerTask( 'docs', [ 'copy:pkg', 'htmlify:docs' ] )
grunt.registerTask( 'travis', [ 'jshint:lib', 'qunit:lib' ] )
// Create and register the task to build out the static HTML files.
grunt.registerMultiTask( 'htmlify', 'Recursively build static HTML files', function() {
var task = this,
// options = task.options(),
// Process the base file using the source file content.
processFile = function( fileSource ) {
var processedContent = ''/*,
fileNameMatch = fileSource.match( /([\w-]+)(\.htm)$/ )*/
// Recursively process the base template using the file source content.
grunt.verbose.writeln( 'Processing ' + fileSource )
processedContent = grunt.template.process( grunt.file.read( task.data.cwd + task.data.base ), {
delimiters: 'curly',
data: {
pkg: packageJSON,
page: fileSource.match( /[\w-]+(?=\.htm$)/ )[ 0 ],
content: grunt.file.read( fileSource ),
meta: grunt.config.data.meta,
dirs: grunt.config.data.dirs
}
})
// Write the destination file by cleaning the file name.
grunt.log.writeln( 'Writing ' + fileSource.cyan )
grunt.file.write( task.data.dest + fileSource.match( /[\w-]+\.htm$/ )[ 0 ], processedContent )
}
// Map through the task directory and process the HTML files.
grunt.log.writeln( 'Expanding ' + task.data.cwd.cyan )
grunt.file.expand( task.data.cwd + task.data.src ).map( processFile )
})
} //module.exports