564241cd38
This is the setup for the Grunt task that generates a changelog. Note that it currently generates the changelog for the range changelog-start..HEAD where changelog-start is a tag. It will always use the most recent tag it can find. We may want to change this behavior. Also, the original repo has some bugs, so I'm using my fork until he accepts my PRs. Migration notes: To run: `grunt git_changelog`
148 lines
4.1 KiB
JavaScript
148 lines
4.1 KiB
JavaScript
/*global module:false*/
|
|
var _ = require('lodash');
|
|
module.exports = function(grunt) {
|
|
|
|
// Project configuration.
|
|
grunt.initConfig({
|
|
git_changelog: {
|
|
minimal: {
|
|
options: {
|
|
repo_url: 'https://github.com/habitrpg/habitrpg',
|
|
appName : 'HabitRPG',
|
|
branch_name: 'develop'
|
|
}
|
|
},
|
|
extended: {
|
|
options: {
|
|
file: 'EXTENDEDCHANGELOG.md',
|
|
repo_url: 'https://github.com/habitrpg/habitrpg',
|
|
appName : 'HabitRPG',
|
|
branch_name: 'develop',
|
|
grep_commits: '^fix|^feat|^docs|^refactor|^chore|BREAKING'
|
|
}
|
|
}
|
|
},
|
|
|
|
karma: {
|
|
unit: {
|
|
configFile: 'karma.conf.js'
|
|
},
|
|
continuous: {
|
|
configFile: 'karma.conf.js',
|
|
singleRun: true,
|
|
autoWatch: false
|
|
}
|
|
},
|
|
|
|
clean: {
|
|
build: ['build']
|
|
},
|
|
|
|
stylus: {
|
|
build: {
|
|
options: {
|
|
compress: false, // AFTER
|
|
'include css': true,
|
|
paths: ['public']
|
|
},
|
|
files: {
|
|
'build/app.css': ['public/css/index.styl'],
|
|
'build/static.css': ['public/css/static.styl']
|
|
}
|
|
}
|
|
},
|
|
|
|
copy: {
|
|
build: {
|
|
files: [
|
|
{expand: true, cwd: 'public/', src: 'favicon.ico', dest: 'build/'},
|
|
{expand: true, cwd: 'public/', src: 'bower_components/habitrpg-shared/dist/spritesmith-*.png', dest: 'build/'}
|
|
]
|
|
}
|
|
},
|
|
|
|
// UPDATE IT WHEN YOU ADD SOME FILES NOT ALREADY MATCHED!
|
|
hashres: {
|
|
build: {
|
|
options: {
|
|
fileNameFormat: '${name}-${hash}.${ext}'
|
|
},
|
|
src: [
|
|
'build/*.js', 'build/*.css', 'build/favicon.ico',
|
|
'build/bower_components/bootstrap/docs/assets/css/*.css',
|
|
'build/bower_components/habitrpg-shared/dist/*.css',
|
|
'build/bower_components/habitrpg-shared/dist/*.png'
|
|
],
|
|
dest: 'make-sure-i-do-not-exist'
|
|
}
|
|
},
|
|
|
|
nodemon: {
|
|
dev: {
|
|
ignoredFiles: ['public/*', 'Gruntfile.js', 'views/*', 'build/*', '.idea*', '.git*']
|
|
}
|
|
},
|
|
|
|
watch: {
|
|
dev: {
|
|
files: ['public/**/*.styl'], // 'public/**/*.js' Not needed because not in production
|
|
tasks: [ 'build:dev' ],
|
|
options: {
|
|
nospawn: true
|
|
}
|
|
}
|
|
},
|
|
|
|
concurrent: {
|
|
dev: ['nodemon', 'watch'],
|
|
options: {
|
|
logConcurrentOutput: true
|
|
}
|
|
}
|
|
|
|
});
|
|
|
|
//Load build files from public/manifest.json
|
|
grunt.registerTask('loadManifestFiles', 'Load all build files from public/manifest.json', function(){
|
|
var files = grunt.file.readJSON('./public/manifest.json');
|
|
var uglify = {};
|
|
var cssmin = {};
|
|
_.each(files, function(val, key){
|
|
var js = uglify['build/' + key + '.js'] = [];
|
|
_.each(files[key]['js'], function(val){
|
|
js.push('public/' + val);
|
|
});
|
|
_.each(files[key]['css'], function(val){
|
|
if(val == 'app.css' || val == 'static.css'){
|
|
cssmin['build/' + val] = ['build/' + val]
|
|
}else{
|
|
cssmin['build/' + val] = ['public/' + val]
|
|
}
|
|
});
|
|
});
|
|
grunt.config.set('uglify.build.files', uglify);
|
|
grunt.config.set('uglify.build.options', {compress: false})
|
|
grunt.config.set('cssmin.build.files', cssmin);
|
|
});
|
|
|
|
// Register tasks.
|
|
grunt.registerTask('build:prod', ['loadManifestFiles', 'clean:build', 'uglify', 'stylus', 'cssmin', 'copy:build', 'hashres']);
|
|
grunt.registerTask('build:dev', ['loadManifestFiles', 'clean:build', 'stylus', 'cssmin', 'copy:build']);
|
|
|
|
grunt.registerTask('run:dev', [ 'build:dev', 'concurrent' ]);
|
|
|
|
// Load tasks
|
|
grunt.loadNpmTasks('grunt-contrib-uglify');
|
|
grunt.loadNpmTasks('grunt-contrib-clean');
|
|
grunt.loadNpmTasks('grunt-contrib-stylus');
|
|
grunt.loadNpmTasks('grunt-contrib-cssmin');
|
|
grunt.loadNpmTasks('grunt-contrib-copy');
|
|
grunt.loadNpmTasks('grunt-nodemon');
|
|
grunt.loadNpmTasks('grunt-concurrent');
|
|
grunt.loadNpmTasks('grunt-contrib-watch');
|
|
grunt.loadNpmTasks('grunt-hashres');
|
|
grunt.loadNpmTasks('grunt-karma');
|
|
grunt.loadNpmTasks('git-changelog');
|
|
|
|
};
|