167 lines
3.3 KiB
JavaScript
167 lines
3.3 KiB
JavaScript
module.exports = function (grunt) {
|
|
var plugins = ['karma-mocha']
|
|
var browsers = []
|
|
|
|
if (process.env.TRAVIS) {
|
|
plugins.push('karma-firefox-launcher')
|
|
browsers.push('Firefox')
|
|
} else {
|
|
plugins.push('karma-chrome-launcher')
|
|
browsers.push('Chrome')
|
|
}
|
|
|
|
grunt.initConfig({
|
|
pkg: grunt.file.readJSON('package.json'),
|
|
|
|
eslint: {
|
|
target: [
|
|
'gruntfile.js',
|
|
'lib/*.js',
|
|
'tasks/*.js',
|
|
'test/*.js'
|
|
]
|
|
},
|
|
|
|
'npm-publish': {
|
|
options: {
|
|
abortIfDirty: true
|
|
}
|
|
},
|
|
|
|
'npm-contributors': {
|
|
options: {
|
|
commitMessage: 'chore: Update contributors'
|
|
}
|
|
},
|
|
|
|
conventionalChangelog: {
|
|
release: {
|
|
options: {
|
|
changelogOpts: {
|
|
preset: 'angular'
|
|
}
|
|
},
|
|
src: 'CHANGELOG.md'
|
|
}
|
|
},
|
|
|
|
conventionalGithubReleaser: {
|
|
release: {
|
|
options: {
|
|
auth: {
|
|
type: 'oauth',
|
|
token: process.env.GH_TOKEN
|
|
},
|
|
changelogOpts: {
|
|
preset: 'angular'
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
bump: {
|
|
options: {
|
|
updateConfigs: ['pkg'],
|
|
commitFiles: ['package.json', 'CHANGELOG.md'],
|
|
commitMessage: 'chore: release v%VERSION%',
|
|
pushTo: 'upstream',
|
|
gitDescribeOptions: '| echo "beta-$(git rev-parse --short HEAD)"'
|
|
}
|
|
},
|
|
|
|
karma: {
|
|
options: {
|
|
browsers: browsers,
|
|
frameworks: ['mocha'],
|
|
plugins: plugins
|
|
},
|
|
single: {
|
|
singleRun: true,
|
|
files: [
|
|
{
|
|
src: 'node_modules/expect.js/index.js'
|
|
}, {
|
|
src: 'test/**/*.js'
|
|
}
|
|
]
|
|
},
|
|
config: {
|
|
configFile: 'karma.conf.js',
|
|
singleRun: true
|
|
},
|
|
merge: {
|
|
options: {
|
|
files: ['node_modules/expect.js/index.js']
|
|
},
|
|
singleRun: true,
|
|
files: [
|
|
{
|
|
src: 'test/**/*.js'
|
|
}
|
|
]
|
|
},
|
|
flatten: {
|
|
options: {
|
|
files: [
|
|
[['node_modules/expect.js/index.js']],
|
|
[[['test/**/*.js']]]
|
|
]
|
|
},
|
|
singleRun: true
|
|
},
|
|
background: {
|
|
background: true,
|
|
files: [
|
|
{
|
|
src: 'node_modules/expect.js/index.js'
|
|
}, {
|
|
src: 'test/**/*.js'
|
|
}
|
|
]
|
|
},
|
|
dev: {
|
|
reporters: 'dots',
|
|
background: true
|
|
},
|
|
auto: {
|
|
autoWatch: true
|
|
}
|
|
},
|
|
watch: {
|
|
tests: {
|
|
files: 'test/**/*.js',
|
|
tasks: ['karma:dev:run']
|
|
},
|
|
bgtest: {
|
|
// This is just to stop node exiting
|
|
files: 'test/**/*.js',
|
|
tasks: []
|
|
}
|
|
}
|
|
})
|
|
|
|
grunt.loadTasks('tasks')
|
|
require('load-grunt-tasks')(grunt)
|
|
|
|
grunt.registerTask('test', [
|
|
'eslint',
|
|
'karma:single',
|
|
'karma:config',
|
|
'karma:merge',
|
|
'karma:flatten'
|
|
])
|
|
grunt.registerTask('default', ['test'])
|
|
grunt.registerTask('bgtest', ['karma:background', 'watch:bgtest'])
|
|
|
|
grunt.registerTask('release', 'Bump the version and publish to npm.', function (type) {
|
|
grunt.task.run([
|
|
'npm-contributors',
|
|
'bump:' + (type || 'patch') + ':bump-only',
|
|
'conventionalChangelog',
|
|
'bump-commit',
|
|
'conventionalGithubReleaser',
|
|
'npm-publish'
|
|
])
|
|
})
|
|
}
|