mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2026-03-13 10:22:08 +08:00
197 lines
4.4 KiB
JavaScript
197 lines
4.4 KiB
JavaScript
var cp = require('child_process');
|
|
var buildConfig = require('./config/build');
|
|
|
|
module.exports = function(grunt) {
|
|
|
|
grunt.initConfig({
|
|
|
|
concat: {
|
|
options: {
|
|
separator: ';\n'
|
|
},
|
|
dist: {
|
|
src: buildConfig.ionicFiles,
|
|
dest: 'dist/js/ionic.js'
|
|
},
|
|
distAngular: {
|
|
src: buildConfig.angularIonicFiles,
|
|
dest: 'dist/js/ionic-angular.js'
|
|
}
|
|
},
|
|
|
|
version: {
|
|
dist: {
|
|
dest: 'dist/version.json'
|
|
}
|
|
},
|
|
|
|
copy: {
|
|
dist: {
|
|
files: [{
|
|
expand: true,
|
|
cwd: './config/lib/',
|
|
src: buildConfig.vendorFiles,
|
|
dest: './dist/'
|
|
}]
|
|
}
|
|
},
|
|
|
|
//Used by CI to check for temporary test code
|
|
//xit, iit, ddescribe, xdescribe
|
|
'ddescribe-iit': ['js/**/*.js'],
|
|
'merge-conflict': ['js/**/*.js'],
|
|
|
|
jshint: {
|
|
files: ['Gruntfile.js', 'js/**/*.js', 'test/**/*.js'],
|
|
options: {
|
|
jshintrc: '.jshintrc'
|
|
}
|
|
},
|
|
|
|
karma: {
|
|
options: {
|
|
configFile: 'config/karma.conf.js'
|
|
},
|
|
single: {
|
|
options: {
|
|
singleRun: true
|
|
}
|
|
},
|
|
sauce: {
|
|
options: {
|
|
singleRun: true,
|
|
configFile: 'config/karma-sauce.conf.js'
|
|
}
|
|
},
|
|
watch: {
|
|
}
|
|
},
|
|
|
|
uglify: {
|
|
dist: {
|
|
files: {
|
|
'dist/js/ionic.min.js': 'dist/js/ionic.js',
|
|
'dist/js/ionic-angular.min.js': 'dist/js/ionic-angular.js'
|
|
}
|
|
},
|
|
options: {
|
|
preserveComments: 'some'
|
|
}
|
|
},
|
|
|
|
sass: {
|
|
dist: {
|
|
files: {
|
|
'dist/css/ionic.css': 'scss/ionic.scss',
|
|
}
|
|
}
|
|
},
|
|
|
|
cssmin: {
|
|
dist: {
|
|
files: {
|
|
'dist/css/ionic.min.css': 'dist/css/ionic.css',
|
|
}
|
|
}
|
|
},
|
|
|
|
'string-replace': {
|
|
version: {
|
|
files: {
|
|
'dist/js/ionic.js': 'dist/js/ionic.js',
|
|
'dist/js/ionic.min.js': 'dist/js/ionic.min.js',
|
|
'dist/js/ionic-angular.js': 'dist/js/ionic-angular.js',
|
|
'dist/js/ionic-angular.min.js': 'dist/js/ionic-angular.min.js',
|
|
'dist/css/ionic.css': 'dist/css/ionic.css',
|
|
'dist/css/ionic.min.css': 'dist/css/ionic.min.css'
|
|
},
|
|
options: {
|
|
replacements: [{
|
|
pattern: /{{ VERSION }}/g,
|
|
replacement: '<%= pkg.version %>'
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
|
|
bump: {
|
|
options: {
|
|
files: ['package.json'],
|
|
commit: false,
|
|
createTag: false,
|
|
push: false
|
|
}
|
|
},
|
|
|
|
watch: {
|
|
scripts: {
|
|
files: ['js/**/*.js', 'ext/**/*.js'],
|
|
tasks: ['concat', 'string-replace'],
|
|
options: {
|
|
spawn: false
|
|
}
|
|
},
|
|
sass: {
|
|
files: ['scss/**/*.scss'],
|
|
tasks: ['sass', 'concat', 'string-replace'],
|
|
options: {
|
|
spawn: false
|
|
}
|
|
}
|
|
},
|
|
|
|
pkg: grunt.file.readJSON('package.json')
|
|
});
|
|
|
|
require('load-grunt-tasks')(grunt);
|
|
|
|
grunt.registerTask('default', [
|
|
'jshint',
|
|
'build'
|
|
]);
|
|
|
|
grunt.registerTask('build', [
|
|
'sass',
|
|
'cssmin',
|
|
'concat',
|
|
'copy',
|
|
'uglify',
|
|
'string-replace',
|
|
'version'
|
|
]);
|
|
|
|
grunt.registerMultiTask('karma', 'Run karma', function() {
|
|
var done = this.async();
|
|
var options = this.options();
|
|
var config = options.configFile;
|
|
var browsers = grunt.option('browsers');
|
|
var singleRun = grunt.option('singleRun') || options.singleRun;
|
|
var reporters = grunt.option('reporters');
|
|
|
|
cp.spawn('node', ['node_modules/karma/bin/karma', 'start', config,
|
|
browsers ? '--browsers=' + browsers : '',
|
|
singleRun ? '--single-run=' + singleRun : '',
|
|
reporters ? '--reporters=' + reporters : ''
|
|
], { stdio: 'inherit' })
|
|
.on('exit', function(code) {
|
|
if (code) return grunt.fail.warn('Karma test(s) failed. Exit code: ' + code);
|
|
done();
|
|
});
|
|
});
|
|
|
|
grunt.registerMultiTask('version', 'Generate version JSON', function() {
|
|
var pkg = grunt.config('pkg');
|
|
this.files.forEach(function(file) {
|
|
var dest = file.dest;
|
|
var d = new Date();
|
|
var version = {
|
|
version: pkg.version,
|
|
codename: pkg.codename,
|
|
date: grunt.template.today('yyyy-mm-dd'),
|
|
time: d.getUTCHours() + ':' + d.getUTCMinutes() + ':' + d.getUTCSeconds()
|
|
};
|
|
grunt.file.write(dest, JSON.stringify(version, null, 2));
|
|
});
|
|
});
|
|
};
|