| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259 |
- module.exports = function(grunt) {
- var compileType = function() {
- var type = this.data.type;
- var template = grunt.file.read('templates/types.js');
- var anon = grunt.file.read('templates/anon.js');
- var files = grunt.file.expand([
- 'src/' + type + '/*.js'
- ]);
- var regexp = /\}\(this, function \(numeral\) \{\s([\s\S]+)(?:\s\}\)\);)/;
- var content = '';
- var file;
- var i;
- for (i = 0; i < files.length; i++) {
- file = grunt.file.read(files[i]);
- content += '\n' + grunt.template.process(anon, {
- data: {
- content: file.match(regexp)[1]
- }
- }) + '\n';
- }
- grunt.file.write('temp/' + type + '.js', content);
- if (type === 'locales') {
- grunt.file.write('locales.js', grunt.template.process(template, {
- data: {
- type: type,
- content: content
- }
- }));
- }
- },
- compileNumeral = function() {
- var regexp = /([\s])return numeral;(?:\s\}\)\);)/;
- var numeral = grunt.file.read('src/numeral.js');
- var formats = grunt.file.read('temp/formats.js');
- var index = numeral.indexOf('return numeral;');
- numeral = numeral.substr(0, index) + '\n' + formats + numeral.substr(index);
- grunt.file.write('numeral.js', numeral);
- };
- require('load-grunt-tasks')(grunt);
- grunt.initConfig({
- mochaTest : {
- all: [
- 'tests/numeral.js',
- 'tests/formats/*.js',
- 'tests/locales/*.js'
- ]
- },
- karma: {
- options: {
- files: [
- 'numeral.js',
- 'locales.js',
- 'tests/numeral.js',
- 'tests/formats/*.js',
- 'tests/locales/*.js'
- ],
- frameworks: [
- 'mocha',
- 'chai'
- ],
- singleRun: true,
- autoWatch: false
- },
- local: {
- browsers: [
- 'Chrome',
- 'Firefox'
- ]
- },
- ci: {
- configFile: 'karma-ci.conf.js'
- }
- },
- copy: {
- locales: {
- files: [
- {
- expand: true,
- cwd: 'src/',
- src: [
- 'locales/*.js'
- ],
- dest: './'
- }
- ]
- }
- },
- compile: {
- locales: {
- type: 'locales'
- },
- formats: {
- type: 'formats'
- }
- },
- uglify: {
- min: {
- files: [
- {
- expand: true,
- cwd: 'src/',
- src: [
- 'locales/*.js'
- ],
- dest: 'min/',
- ext: '.min.js'
- },
- {
- expand: true,
- src: [
- 'numeral.js',
- 'locales.js'
- ],
- dest: 'min/',
- ext: '.min.js'
- }
- ]
- },
- options: {
- preserveComments: 'some'
- }
- },
- jshint: {
- all: [
- 'Gruntfile.js',
- 'src/**/*.js'
- ],
- options: {
- 'node': true,
- 'browser': true,
- 'curly': true,
- 'devel': false,
- 'eqeqeq': true,
- 'eqnull': true,
- 'newcap': true,
- 'noarg': true,
- 'undef': true,
- 'sub': true,
- 'strict': false,
- 'quotmark': 'single',
- 'globals': {
- 'define': true
- }
- }
- }
- });
- grunt.registerTask('default', [
- 'test'
- ]);
- grunt.registerMultiTask('compile', compileType);
- grunt.registerTask('compile:numeral', compileNumeral);
- grunt.registerTask('build', [
- 'jshint',
- 'compile',
- 'compile:numeral',
- 'copy'
- ]);
- grunt.registerTask('test', [
- 'build',
- 'mochaTest',
- 'karma:local'
- ]);
- grunt.registerTask('test:npm', [
- 'build',
- 'mochaTest'
- ]);
- grunt.registerTask('test:browser', [
- 'build',
- 'karma:local'
- ]);
- grunt.registerTask('dist', [
- 'build',
- 'uglify'
- ]);
- grunt.registerTask('version', function (version) {
- if (!version || version.split('.').length !== 3) {
- grunt.fail.fatal('malformed version. Use\n\n grunt version:1.2.3');
- }
- grunt.config('string-replace.json', {
- files: {
- 'package.json': 'package.json',
- 'component.json': 'component.json',
- 'bower.json': 'bower.json'
- },
- options: {
- replacements: [
- {
- pattern: /"version": .*/,
- replacement: '"version": "' + version + '",'
- }
- ]
- }
- });
- grunt.config('string-replace.numeral', {
- files: {
- 'src/numeral.js': 'src/numeral.js'
- },
- options: {
- replacements: [
- {
- pattern: /version : .*/,
- replacement: 'version : ' + version
- },
- {
- pattern: /VERSION = .*/,
- replacement: 'VERSION = \'' + version + '\','
- }
- ]
- }
- });
- grunt.config('string-replace.templates', {
- files: {
- 'templates/types.js': 'templates/types.js'
- },
- options: {
- replacements: [
- {
- pattern: /: .*/,
- replacement: ': ' + version
- }
- ]
- }
- });
- grunt.task.run([
- 'string-replace:json',
- 'string-replace:templates',
- 'string-replace:numeral'
- ]);
- });
- // Travis CI task.
- grunt.registerTask('travis', [
- 'build',
- 'mochaTest',
- 'karma:ci'
- ]);
- };
|