234 lines
5.9 KiB
JavaScript
Executable File
234 lines
5.9 KiB
JavaScript
Executable File
/*global module:false*/
|
|
module.exports = function(grunt) {
|
|
// show elapsed time at the end
|
|
require('time-grunt')(grunt)
|
|
|
|
// load all grunt tasks
|
|
//require('load-grunt-tasks')(grunt);
|
|
require('jit-grunt')(grunt, {
|
|
'bump-only': 'grunt-bump',
|
|
'bump-commit': 'grunt-bump',
|
|
coveralls: 'grunt-karma-coveralls'
|
|
})
|
|
|
|
// Project configuration.
|
|
grunt.initConfig({
|
|
pkg: grunt.file.readJSON('package.json'),
|
|
|
|
meta: {
|
|
bannerLocal:
|
|
'/*! iFrame Resizer (iframeSizer.min.js ) - v<%= pkg.version %> - ' +
|
|
'<%= grunt.template.today("yyyy-mm-dd") %>\n' +
|
|
' * Desc: Force cross domain iframes to size to content.\n' +
|
|
' * Requires: iframeResizer.contentWindow.min.js to be loaded into the target frame.\n' +
|
|
' * Copyright: (c) <%= grunt.template.today("yyyy") %> David J. Bradshaw - dave@bradshaw.net\n' +
|
|
' * License: MIT\n */\n',
|
|
bannerRemote:
|
|
'/*! iFrame Resizer (iframeSizer.contentWindow.min.js) - v<%= pkg.version %> - ' +
|
|
'<%= grunt.template.today("yyyy-mm-dd") %>\n' +
|
|
' * Desc: Include this file in any page being loaded into an iframe\n' +
|
|
' * to force the iframe to resize to the content size.\n' +
|
|
' * Requires: iframeResizer.min.js on host page.\n' +
|
|
' * Copyright: (c) <%= grunt.template.today("yyyy") %> David J. Bradshaw - dave@bradshaw.net\n' +
|
|
' * License: MIT\n */\n'
|
|
},
|
|
|
|
clean: ['coverage', 'coverageLcov'],
|
|
|
|
qunit: {
|
|
files: ['test/*.html'],
|
|
puppeteer: {
|
|
args: [
|
|
'--disable-web-security',
|
|
'--allow-file-access-from-files',
|
|
'--user-data-dir=/tmp'
|
|
]
|
|
}
|
|
},
|
|
|
|
karma: {
|
|
options: {
|
|
configFile: 'karma.conf.js'
|
|
},
|
|
travis: {
|
|
singleRun: true,
|
|
browsers: ['Chrome'], // 'PhantomJS'
|
|
coverageReporter: {
|
|
type: 'lcov',
|
|
dir: 'coverageLcov/'
|
|
}
|
|
},
|
|
single: {
|
|
singleRun: true,
|
|
browsers: ['Chrome', 'Firefox'] // 'Safari', 'PhantomJS'
|
|
}
|
|
},
|
|
|
|
coveralls: {
|
|
options: {
|
|
debug: true,
|
|
coverageDir: 'coverageLcov',
|
|
dryRun: false,
|
|
force: true,
|
|
recursive: true
|
|
}
|
|
},
|
|
|
|
jshint: {
|
|
options: {
|
|
asi: true,
|
|
eqeqeq: true,
|
|
laxbreak: true,
|
|
globals: {
|
|
jQuery: false,
|
|
require: true,
|
|
process: true
|
|
}
|
|
},
|
|
gruntfile: {
|
|
src: 'gruntfile.js'
|
|
},
|
|
code: {
|
|
src: 'src/**/*.js'
|
|
}
|
|
},
|
|
|
|
uglify: {
|
|
options: {
|
|
sourceMap: true,
|
|
sourceMapIncludeSources: true,
|
|
report: 'gzip'
|
|
},
|
|
local: {
|
|
options: {
|
|
banner: '<%= meta.bannerLocal %>',
|
|
sourceMapName: 'js/iframeResizer.map'
|
|
},
|
|
src: ['js/iframeResizer.js'],
|
|
dest: 'js/iframeResizer.min.js'
|
|
},
|
|
remote: {
|
|
options: {
|
|
banner: '<%= meta.bannerRemote %>',
|
|
sourceMapName: 'js/iframeResizer.contentWindow.map'
|
|
},
|
|
src: ['js/iframeResizer.contentWindow.js'],
|
|
dest: 'js/iframeResizer.contentWindow.min.js'
|
|
}
|
|
},
|
|
|
|
watch: {
|
|
files: ['src/**/*'],
|
|
tasks: 'default'
|
|
},
|
|
|
|
bump: {
|
|
options: {
|
|
files: [
|
|
'package.json',
|
|
'package-lock.json',
|
|
'bower.json',
|
|
'iframeResizer.jquery.json'
|
|
],
|
|
updateConfigs: ['pkg'],
|
|
commit: true,
|
|
commitMessage: 'Release v%VERSION%',
|
|
commitFiles: ['-a'], // '-a' for all files
|
|
createTag: true,
|
|
tagName: 'v%VERSION%',
|
|
tagMessage: 'Version %VERSION%',
|
|
push: true,
|
|
pushTo: 'origin',
|
|
gitDescribeOptions: '--tags --always --abbrev=1 --dirty=-d' // options to use with '$ git describe'
|
|
}
|
|
},
|
|
|
|
shell: {
|
|
options: {
|
|
stdout: true,
|
|
stderr: true,
|
|
failOnError: true
|
|
},
|
|
npm: {
|
|
command: 'npm publish'
|
|
},
|
|
deployExample: {
|
|
command: function() {
|
|
var retStr = '',
|
|
fs = require('fs')
|
|
|
|
if (fs.existsSync('bin')) {
|
|
retStr = 'bin/deploy.sh'
|
|
}
|
|
|
|
return retStr
|
|
}
|
|
}
|
|
},
|
|
|
|
jsonlint: {
|
|
json: {
|
|
src: ['*.json']
|
|
}
|
|
},
|
|
|
|
removeBlock: {
|
|
options: ['TEST CODE START', 'TEST CODE END'],
|
|
files: [
|
|
{
|
|
src: 'src/iframeResizer.contentWindow.js',
|
|
dest: 'js/iframeResizer.contentWindow.js'
|
|
}
|
|
]
|
|
},
|
|
|
|
copy: {
|
|
main: {
|
|
nonull: true,
|
|
src: 'src/iframeResizer.js',
|
|
dest: 'js/iframeResizer.js'
|
|
}
|
|
},
|
|
|
|
eslint: {
|
|
target: ['src/**']
|
|
}
|
|
})
|
|
|
|
grunt.registerTask('default', ['notest', 'karma:single'])
|
|
grunt.registerTask('build', ['removeBlock', 'copy', 'uglify'])
|
|
grunt.registerTask('notest', ['eslint', 'jsonlint', 'jshint', 'build'])
|
|
grunt.registerTask('test', ['clean', 'eslint', 'karma:single', 'qunit'])
|
|
grunt.registerTask('travis', [
|
|
'clean',
|
|
'notest',
|
|
'qunit',
|
|
'karma:travis',
|
|
'coveralls'
|
|
])
|
|
|
|
grunt.registerTask('postBump', ['build', 'bump-commit', 'shell'])
|
|
grunt.registerTask('preBump', ['clean', 'notest'])
|
|
grunt.registerTask('patch', ['preBump', 'bump-only:patch', 'postBump'])
|
|
grunt.registerTask('minor', ['preBump', 'bump-only:minor', 'postBump'])
|
|
grunt.registerTask('major', ['preBump', 'bump-only:major', 'postBump'])
|
|
|
|
grunt.registerMultiTask('removeBlock', function() {
|
|
// set up a removal regular expression
|
|
var removalRegEx = new RegExp(
|
|
'(// ' +
|
|
this.options()[0] +
|
|
' //)(?:[^])*?(// ' +
|
|
this.options()[1] +
|
|
' //)',
|
|
'g'
|
|
)
|
|
|
|
this.data.forEach(function(fileObj) {
|
|
var sourceFile = grunt.file.read(fileObj.src),
|
|
removedFile = sourceFile.replace(removalRegEx, ''),
|
|
targetFile = grunt.file.write(fileObj.dest, removedFile)
|
|
}) // for each loop end
|
|
})
|
|
}
|