Files
yoga/Gruntfile.js
2015-08-12 06:17:53 +01:00

96 lines
2.2 KiB
JavaScript

'use strict';
module.exports = function(grunt) {
require('load-grunt-tasks')(grunt);
grunt.initConfig({
paths: {
distFolder: 'dist',
srcFolder: 'src',
testFolder: 'src/__tests__',
cTestFiles: 'src/__tests__/Layout-test.c src/Layout.c src/Layout-test-utils.c',
cTestOutput: 'c_test'
},
clean: {
dist: ['<%= paths.distFolder %>'],
ctest: ['<%= paths.cTestOutput %>']
},
eslint: {
options: {
configFile: '.eslintrc'
},
target: ['<%= paths.srcFolder %>/Layout.js']
},
includereplace: {
options: {
prefix: '// @@',
},
main: {
src: '<%= paths.srcFolder %>/css-layout.js',
dest: '<%= paths.distFolder %>/css-layout.js'
}
},
uglify: {
options: {
sourceMap: true,
sourceMapIncludeSources: true
},
main: {
files: {
'<%= paths.distFolder %>/css-layout.min.js': ['<%= paths.distFolder %>/css-layout.js']
}
}
},
karma: {
main: {
options: {
files: [
'<%= paths.srcFolder %>/Layout.js',
'<%= paths.srcFolder %>/Layout-test-utils.js',
'<%= paths.testFolder %>/Layout-test.js',
'<%= paths.testFolder %>/Layout-consts-test.js'
],
browsers: ['Chrome'],
frameworks: ['jasmine'],
singleRun: true
}
}
},
execute: {
transpile: {
src: ['<%= paths.srcFolder %>/transpile.js']
}
},
shell: {
ccompile: {
command: 'gcc -std=c99 -Werror -Wno-padded <%= paths.cTestFiles %> -lm -o "./<%= paths.cTestOutput %>"'
},
ctestExecute: {
command: './<%= paths.cTestOutput %>'
}
}
});
grunt.registerTask('ctest', ['shell:ccompile', 'shell:ctestExecute', 'clean:ctest']);
grunt.registerTask('transpile', ['execute:transpile', 'ctest']);
grunt.registerTask('test-javascript', ['eslint', 'karma']);
grunt.registerTask('package-javascript', ['clean:dist', 'includereplace', 'uglify']);
grunt.registerTask('build', ['test-javascript', 'transpile', 'package-javascript']);
grunt.registerTask('default', ['build']);
};