UNPKG

techan-js

Version:

A visual, technical analysis and charting (Candlestick, OHLC, indicators) library built on D3.

250 lines (227 loc) 6.48 kB
module.exports = function(grunt) { 'use strict'; grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), config: { banner: '/*\n' + ' TechanJS v<%= pkg.version %>\n' + " (c) 2014 - <%= grunt.template.today('yyyy') %> Andre Dumas | https://github.com/andredumas/techan.js\n" + '*/', dist: 'techan-<%= pkg.version %>', dep: { d3: 'bower_components/d3/d3.js' }, src: { test: { common: 'test/spec/common/**/*.js', standalone: 'test/spec/standalone/**/*.js' } } }, clean: { dist: 'dist', build: 'build', version: 'src/version' }, filegen: { version: { options: { content: "'use strict';module.exports='<%= pkg.version %>';\n" }, dest: '<%= clean.version %>/index.js' } }, watchify: { options: { debug: true, callback: function(browserify) { browserify.external('d3'); return browserify; } }, dev: { options: { standalone: 'techan' }, src: './src/techan.js', dest: '<%= clean.build %>/techan-bundle.js' }, test: { src: './test/spec/bundle/**/*.js', dest: '<%= clean.build %>/specs-bundle.js' } }, browserify: { dist: { options: { browserifyOptions: { standalone: 'techan' }, external: ['d3'] }, src: './src/techan.js', dest: '<%= clean.dist %>/techan.js' } }, usebanner: { options: { position: 'top', banner: '<%= config.banner %>', linebreak: true }, dist: { files: { src: '<%= browserify.dist.dest %>' } } }, jsonlint: { bower: { src: 'bower.json' }, dist: { src: 'package.json' } }, jshint: { options: { jshintrc: ".jshintrc" }, config: { src: ['Gruntfile.js'] }, dev: { src: ['src/**/*.js', 'lib/**/*.js', 'test/**/*.js', '<%= filegen.version.dest %>'] } }, jscs: { options: { config: '.jscs.json' }, dev: { src: ['src/**/*.js', 'Gruntfile.js', 'test/**/*.js', '<%= filegen.version.dest %>'] } }, watch: { config: { files: [ 'Gruntfile.js'], tasks: ['lint'], options: { reload: true } }, dev: { files: ['<%= jshint.dev.src %>', 'examples/**/*'], tasks: ['examples', 'dev'], options: { reload: false, livereload: true } } }, karma: { options: { configFile: 'karma.conf.js' }, watch: { background: true, singleRun: false, files: { src: ['<%= config.dep.d3 %>', '<%= config.src.test.common %>', '<%= watchify.test.dest %>'] // Single browserify bundle that includes src under test } }, test: { //background: true, files: '<%= karma.watch.files %>' }, dist: { files: { src: ['<%= config.dep.d3 %>', '<%= config.src.test.common %>', '<%= browserify.dist.dest %>', '<%= config.src.test.standalone %>'] } }, minify: { files: { src: ['<%= config.dep.d3 %>', '<%= config.src.test.common %>', '<%= uglify.dist.dest %>', '<%= config.src.test.standalone %>'] } } }, uglify: { options: { banner: '<%= config.banner %>', sourceMap: true, report: 'min' }, dist: { src: '<%= browserify.dist.dest %>', dest: '<%= clean.dist %>/techan.min.js' } }, compress: { dist: { options: { archive: '<%= clean.dist %>/techan.zip' }, expand: true, cwd: '<%= clean.dist %>', src: ['*.js*'], dest: '<%= config.dist %>' } }, bump: { options: { updateConfigs: ['pkg'], commit: true, commitMessage: 'Release %VERSION%', commitFiles: ['-a'], createTag: true, tagName: '%VERSION%', tagMessage: '%VERSION%', push: false } }, connect: { server: { options: { open: 'http://localhost:8000/build/examples/', livereload: true } } }, copy: { examples: { files: [ { expand: true, cwd: 'examples', src: ['**', '!**/*.html', '!**/node_modules/**'], dest: '<%= clean.build %>/examples/' } ] } }, replace: { main: { options: { patterns: [ { match: /http:\/\/d3js\.org\/d3.*.js/g, replacement: '/bower_components/d3/d3.js' }, { match: /http:\/\/techanjs\.org\/techan\.min\.js/g, replacement: '/<%= watchify.dev.dest %>' }, // Append the livereload script to the end of the example files { match: /^<\/script>/m, replacement: '</script>\n<script src="//localhost:35729/livereload.js"></script>' } ] }, files: [ { expand: true, cwd: 'examples', src: ['**/*.html', '!**/node_modules/**'], dest: '<%= clean.build %>/examples/' } ] } } }); require('load-grunt-tasks')(grunt); grunt.loadTasks('lib/grunt'); grunt.registerTask('lint', ['newer:jshint', 'newer:jscs']); grunt.registerTask('dev', ['lint', 'watchify:dev', 'watchify:test', 'karma:watch:run']); grunt.registerTask('test', ['lint', 'watchify:dev', 'watchify:test', 'karma:test']); grunt.registerTask('examples', ['newer:replace', 'newer:copy']); grunt.registerTask('dist', ['browserify:dist', 'usebanner', 'karma:dist']); grunt.registerTask('minify', ['uglify', 'karma:minify']); grunt.registerTask('serve', ['bower', 'clean', 'filegen:version', 'examples', 'test', 'connect', 'karma:watch:start', 'watch']); grunt.registerTask('release:pre', ['bump-only:prerelease', 'default']); grunt.registerTask('release:patch', ['bump-only:patch', 'default', 'bump-commit']); grunt.registerTask('release:minor', ['bump-only:minor', 'default', 'bump-commit']); grunt.registerTask('release:major', ['bump-only:major', 'default', 'bump-commit']); grunt.registerTask('default', ['jsonlint', 'bower', 'clean', 'filegen:version', 'test', 'dist', 'minify', 'compress']); };