Beautifully crafted timelines that are easy and intuitive to use. http://timeline.knightlab.com/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

103 lines
3.3 KiB

'use strict';
// Variables
var path = require('path');
module.exports = function(grunt) {
// Project configuration
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
// timeline configuration
timeline: {
compiled: 'compiled',
website: '../timeline.knightlab.com'
},
// cdn configuation
cdn: {
repo: '../cdn.knightlab.com',
path: path.join('..', 'cdn.knightlab.com', 'apps', 'libs', 'timeline')
},
// Banner for the top of CSS and JS files
// Note: The existing Timeline repo has its own banner, so we'll ignore this for now
banner: '/* <%= pkg.title || pkg.name %> - v<%= pkg.version %> - <%= grunt.template.today("yyyy-mm-dd") %>\n' +
' * <%= pkg.homepage %>\n' +
' * Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author %>;\n' +
' */\n',
// Clean
clean: {
stg: {
options: { force: true },
src: path.join('<%= cdn.path %>', '<%= pkg.version %>')
},
stgLatest: {
options: { force: true },
src: path.join('<%= cdn.path %>', 'latest')
}
},
// Copy
copy: {
website: {
files: [
// Styles/Themes
{ expand: true, cwd: '<%= timeline.compiled %>/css', src: ['*.css', 'themes/**'], dest: '<%= timeline.website %>/static/css'},
// Scripts
{ expand: true, cwd: '<%= timeline.compiled %>/js', src: ['**/*.js'], dest: '<%= timeline.website %>/static/js'},
// Images
{ expand: true, cwd: '<%= timeline.compiled %>/css', src: ['*.{png,gif,jpg}'], dest: '<%= timeline.website %>/static/img'}
]
},
stg: {
files: [
{
expand: true,
cwd: '<%= timeline.compiled %>',
src: ['css/**', 'js/**', 'lib/**'],
dest: path.join('<%= cdn.path %>', '<%= pkg.version %>')
}
]
},
stgLatest: {
files: [
{
expand: true,
cwd: '<%= timeline.compiled %>',
src: ['css/**', 'js/**', 'lib/**'],
dest: path.join('<%= cdn.path %>', '<%= latest %>')
}
]
}
}
});
// Load all Grunt tasks
require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);
// Task aliases
grunt.registerTask('check-for-website', 'Check for the website repository', function() {
// Make sure CDN repo exists
if(!grunt.file.exists(grunt.config.get('timeline.website'))) {
grunt.fatal('Could not find local website repository.')
}
});
grunt.registerTask('check-for-cdn', 'Check for the cdn.knightlab.com repository', function() {
// Make sure CDN repo exists
if(!grunt.file.exists(grunt.config.get('cdn.repo'))) {
grunt.fatal('Could not find local cdn repository.')
}
});
// Define complex tasks
grunt.registerTask('website', "Copy select files to the timeline.knightlab.com website repository",
['check-for-website', 'copy:website']);
grunt.registerTask('stage', "Stage the release for deployment to the CDN",
['check-for-cdn', 'clean:stg', 'copy:stg']);
grunt.registerTask('stage-latest', "Stage the release for deployment to the CDN, and copy it to the latest directory",
['stage', 'clean:stgLatest', 'copy:stgLatest']);
};