-
-
Save thomasboyt/6406507 to your computer and use it in GitHub Desktop.
| module.exports = { | |
| options: { | |
| separator: ';' | |
| }, | |
| dist: { | |
| src: ['src/**/*.js'], | |
| dest: 'dist/<%= pkg.name %>.js' | |
| } | |
| } |
| module.exports = function(grunt) { | |
| grunt.registerTask('helloWorld', 'Say hello!', function() { | |
| grunt.log.writeln("Hello world!"); | |
| }); | |
| }; |
| function loadConfig(path) { | |
| var glob = require('glob'); | |
| var object = {}; | |
| var key; | |
| glob.sync('*', {cwd: path}).forEach(function(option) { | |
| key = option.replace(/\.js$/,''); | |
| object[key] = require(path + option); | |
| }); | |
| return object; | |
| } |
| var config = { | |
| pkg: grunt.file.readJSON('package.json'), | |
| env: process.env | |
| }; | |
| grunt.util._.extend(config, loadConfig('./tasks/options/')); | |
| grunt.initConfig(config); |
| require('load-grunt-tasks')(grunt); |
| grunt.loadNpmTasks('grunt-contrib-uglify'); | |
| grunt.loadNpmTasks('grunt-contrib-jshint'); | |
| grunt.loadNpmTasks('grunt-contrib-qunit'); | |
| grunt.loadNpmTasks('grunt-contrib-watch'); | |
| grunt.loadNpmTasks('grunt-contrib-concat'); |
| grunt.loadTasks('tasks'); |
| module.exports = function(grunt) { | |
| grunt.initConfig({ | |
| pkg: grunt.file.readJSON('package.json'), | |
| concat: { | |
| options: { | |
| separator: ';' | |
| }, | |
| dist: { | |
| src: ['src/**/*.js'], | |
| dest: 'dist/<%= pkg.name %>.js' | |
| } | |
| }, | |
| uglify: { | |
| options: { | |
| banner: '/*! <%= pkg.name %> <%= grunt.template.today("dd-mm-yyyy") %> */\n' | |
| }, | |
| dist: { | |
| files: { | |
| 'dist/<%= pkg.name %>.min.js': ['<%= concat.dist.dest %>'] | |
| } | |
| } | |
| }, | |
| qunit: { | |
| files: ['test/**/*.html'] | |
| }, | |
| jshint: { | |
| files: ['gruntfile.js', 'src/**/*.js', 'test/**/*.js'], | |
| options: { | |
| // options here to override JSHint defaults | |
| globals: { | |
| jQuery: true, | |
| console: true, | |
| module: true, | |
| document: true | |
| } | |
| } | |
| }, | |
| watch: { | |
| files: ['<%= jshint.files %>'], | |
| tasks: ['jshint', 'qunit'] | |
| } | |
| }); | |
| grunt.loadNpmTasks('grunt-contrib-uglify'); | |
| grunt.loadNpmTasks('grunt-contrib-jshint'); | |
| grunt.loadNpmTasks('grunt-contrib-qunit'); | |
| grunt.loadNpmTasks('grunt-contrib-watch'); | |
| grunt.loadNpmTasks('grunt-contrib-concat'); | |
| grunt.registerTask('test', ['jshint', 'qunit']); | |
| grunt.registerTask('default', ['jshint', 'qunit', 'concat', 'uglify']); | |
| }; |
Ah, my bad, the syntax I wanted (and had, until I copied your code without thinking) was:
module.exports = function(grunt) {
grunt.registerTask('styleguide', [
'string-replace:styleguide',
'clean:styleguide_data',
'copy:styleguide',
'kss', // note: kss:styleguide fails here, otherwise I would use this convention for consistency
'clean:styleguide_data_public'
]);
};
Cheers.
I have one other question:
Some of my grunts are fairly detailed to set up. So I plan to have them on Github so I can pull them down without having to remember how to set them up.
Is it possible to adapt the script to have a separate options folder for each task, or to append the grunt name to the task filename?
styleguide_task.js
|- clean_styleguide.js
|- copy_styleguide.js
Then I could just merge the existing tasks and options folder when importing my preconfigured ones.
Note that I might want to have several grunts using the same tasks (copy being used one way for one grunt and another way for a different grunt).
Thanks.
I think this tutorial could be improved by including a repository that shows the directory layout.
I'm familiar with Grunt, but following the step-by-step instructions, I somehow missed wrapping my Gruntfile.js in a module.exports. Maybe complete files would help.
Other than that, this was very helpful! Thank you for putting this together.
A question from me too:
example_task.js - my task calls other tasks:
If i enable the
--verboseflag I can see that mystyleguidetask is registered, as are my other tasks listed in the options folder.However no styleguide is generated.
Is it possible to run the tasks in the way I have been doing? Or can you suggest another way?
Thanks.