showdown/Gruntfile.js

259 lines
6.2 KiB
JavaScript
Raw Normal View History

2015-01-05 05:27:45 +08:00
/**
* Created by Tivie on 12-11-2014.
*/
2022-04-28 15:38:48 +08:00
const commonmark = require('commonmark-spec');
2015-01-05 05:27:45 +08:00
module.exports = function (grunt) {
if (grunt.option('q') || grunt.option('quiet')) {
require('quiet-grunt');
}
/**
* Load common tasks for legacy and normal tests
*/
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-mocha-test');
grunt.loadNpmTasks('grunt-endline');
grunt.loadNpmTasks('grunt-contrib-jshint');
// Project configuration.
2022-04-28 04:45:10 +08:00
let config = {
pkg: grunt.file.readJSON('package.json'),
concat: {
dist: {
options: {
sourceMap: true,
banner: ';/*! <%= pkg.name %> v <%= pkg.version %> - <%= grunt.template.today("dd-mm-yyyy") %> */\n(function(){\n',
footer: '}).call(this);\n'
},
src: [
2015-07-13 12:09:03 +08:00
'src/options.js',
'src/showdown.js',
'src/helpers.js',
'src/event.js',
'src/subParsers/makehtml/*.js',
'src/subParsers/makemarkdown/*.js',
'src/converter.js',
'src/loader.js'
],
dest: 'dist/<%= pkg.name %>.js'
},
cli: {
src: [
'src/cli/cli.js'
],
dest: 'bin/showdown.js'
},
test: {
src: '<%= concat.dist.src %>',
dest: '.build/<%= pkg.name %>.js',
options: {
sourceMap: false
}
}
},
clean: ['.build/'],
uglify: {
dist: {
options: {
sourceMap: true,
banner: '/*! <%= pkg.name %> v <%= pkg.version %> - <%= grunt.template.today("dd-mm-yyyy") %> */'
},
files: {
'dist/<%= pkg.name %>.min.js': ['<%= concat.dist.dest %>']
2015-01-05 05:27:45 +08:00
}
},
cli: {
options: {
sourceMap: false,
banner: '#!/usr/bin/env node'
},
files: {
'bin/showdown.js': ['<%= concat.cli.dest %>']
}
}
},
endline: {
dist: {
files: {
'dist/<%= pkg.name %>.js': 'dist/<%= pkg.name %>.js',
'dist/<%= pkg.name %>.min.js': 'dist/<%= pkg.name %>.min.js'
}
}
},
jshint: {
2015-06-17 08:26:50 +08:00
options: {
jshintrc: '.jshintrc'
2015-06-17 08:26:50 +08:00
},
files: [
'Gruntfile.js',
'src/**/*.js',
'test/**/*.js'
]
},
eslint: {
options: {
overrideConfigFile: '.eslintrc.json'
2015-04-22 23:56:31 +08:00
},
target: [
'Gruntfile.js',
'src/**/*.js',
'test/**/*.js'
]
},
conventionalChangelog: {
2015-05-14 08:59:33 +08:00
options: {
changelogOpts: {
preset: 'angular'
}
},
release: {
src: 'CHANGELOG.md'
2015-05-14 08:59:33 +08:00
}
},
conventionalGithubReleaser: {
release: {
options: {
auth: {
type: 'oauth',
token: process.env.GH_TOEKN
},
changelogOpts: {
preset: 'angular'
}
}
}
},
mochaTest: {
2017-12-22 23:28:41 +08:00
functional: {
2022-04-28 04:45:10 +08:00
src: 'test/functional/**/testsuite.*.js',
options: {
timeout: 3000,
ignoreLeaks: true,
reporter: 'spec',
require: ['test/bootstrap.js']
}
},
commonmark: {
src: 'test/functional/makehtml/extra.testsuite.commonmark.js',
options: {
timeout: 3000,
2015-07-15 04:17:27 +08:00
ignoreLeaks: true,
reporter: 'spec',
require: ['test/bootstrap.js']
}
},
2017-12-22 23:28:41 +08:00
unit: {
src: 'test/unit/**/*.js',
options: {
timeout: 3000,
2017-12-22 23:28:41 +08:00
ignoreLeaks: true,
reporter: 'spec',
require: ['test/bootstrap.js']
}
},
single: {
options: {
timeout: 3000,
ignoreLeaks: false,
reporter: 'spec',
require: ['test/bootstrap.js']
}
},
cli: {
src: 'test/unit/cli.js',
options: {
timeout: 3000,
ignoreLeaks: false,
reporter: 'spec',
require: ['test/bootstrap.js']
}
}
}
};
grunt.initConfig(config);
2015-01-05 05:27:45 +08:00
/**
* Generate Changelog
*/
grunt.registerTask('generate-changelog', function () {
'use strict';
grunt.loadNpmTasks('grunt-conventional-changelog');
grunt.task.run('conventionalChangelog');
});
/**
* Lint tasks
*/
grunt.registerTask('lint', function () {
'use strict';
grunt.loadNpmTasks('grunt-eslint');
grunt.task.run('jshint', 'eslint');
});
/**
* Performance task
*/
grunt.registerTask('performancejs', function () {
'use strict';
2022-04-28 04:45:10 +08:00
let perf = require('./test/performance/performance.js');
perf.runTests();
perf.generateLogs();
});
/**
* Run a single test
*/
grunt.registerTask('single-test', function (file) {
'use strict';
grunt.config.merge({
mochaTest: {
single: {
src: file
}
}
});
grunt.task.run(['lint', 'concat:test', 'mochaTest:single', 'clean']);
});
2022-04-28 15:38:48 +08:00
grunt.registerTask('extract-commonmark-tests', function () {
'use strict';
let commonmark = require('commonmark-spec');
let testsuite = JSON.stringify(commonmark.tests, null, 2);
grunt.file.write('test/functional/makehtml/cases/commonmark.testsuite.json', testsuite)
});
/**
2017-12-22 23:28:41 +08:00
* Tasks
*/
grunt.registerTask('test', ['clean', 'lint', 'concat:test', 'mochaTest:unit', 'mochaTest:functional', 'clean']);
grunt.registerTask('test-functional', ['concat:test', 'mochaTest:functional', 'clean']);
grunt.registerTask('test-unit', ['concat:test', 'mochaTest:unit', 'clean']);
grunt.registerTask('test-cli', ['clean', 'lint', 'concat:test', 'mochaTest:cli', 'clean']);
2022-04-28 15:38:48 +08:00
grunt.registerTask('test-commonmark', ['clean', 'lint', 'concat:test', 'extract-commonmark-tests', 'mochaTest:commonmark', 'clean']);
2016-12-23 17:29:58 +08:00
grunt.registerTask('performance', ['concat:test', 'performancejs', 'clean']);
grunt.registerTask('build', ['test', 'concat:dist', 'concat:cli', 'uglify:dist', 'uglify:cli', 'endline']);
grunt.registerTask('build-without-test', ['concat:dist', 'uglify', 'endline']);
grunt.registerTask('prep-release', ['build', 'performance', 'generate-changelog']);
2015-01-05 05:27:45 +08:00
// Default task(s).
2015-05-27 09:21:36 +08:00
grunt.registerTask('default', ['test']);
2015-01-05 05:27:45 +08:00
};