You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
155 lines
5.2 KiB
155 lines
5.2 KiB
const webpackConfig = require('./webpack.config'); |
|
const qunitWebpackConfig = require('./qunit/webpack.config'); |
|
|
|
module.exports = function (grunt) { |
|
function createBanner(fileName) { |
|
return "/*!\n" + |
|
"* " + fileName + "\n" + |
|
"* <%= pkg.homepage %>\n" + |
|
"* Copyright (c) 2010 - <%= grunt.template.today('yyyy') %> <%= pkg.author.name %>\n" + |
|
"* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)\n" + |
|
"* Version: <%= pkg.version %>\n" + |
|
"*/\n"; |
|
} |
|
|
|
function createUglifyConfig(path) { |
|
var uglifyConfig = {}; |
|
var srcFiles = grunt.file.expand(path + "/**/*.js"); |
|
for (var srcNdx in srcFiles) { |
|
var dstFile = srcFiles[srcNdx].replace("js/", ""), |
|
dstFileMin = dstFile.replace(".js", ".min.js"); |
|
uglifyConfig[dstFile] = { |
|
dest: 'dist/inputmask/' + dstFile, |
|
src: srcFiles[srcNdx], |
|
options: { |
|
banner: createBanner(dstFile), |
|
beautify: true, |
|
mangle: false, |
|
preserveComments: false, |
|
ASCIIOnly: true |
|
} |
|
}; |
|
uglifyConfig[dstFileMin] = { |
|
dest: "dist/min/inputmask/" + dstFileMin, |
|
src: srcFiles[srcNdx], |
|
options: { |
|
banner: createBanner(dstFileMin), |
|
preserveComments: false, |
|
ASCIIOnly: true |
|
} |
|
}; |
|
} |
|
|
|
uglifyConfig["bundle"] = { |
|
dest: "dist/jquery.inputmask.bundle.js", |
|
src: "build/bundle.js", |
|
options: { |
|
banner: createBanner("jquery.inputmask.bundle.js"), |
|
beautify: true, |
|
mangle: false, |
|
preserveComments: false, |
|
ASCIIOnly: true |
|
} |
|
}; |
|
uglifyConfig["bundlemin"] = { |
|
dest: "dist/min/jquery.inputmask.bundle.min.js", |
|
src: "build/bundle.js", |
|
options: { |
|
banner: createBanner("jquery.inputmask.bundle.js"), |
|
preserveComments: false, |
|
ASCIIOnly: true |
|
} |
|
}; |
|
|
|
return uglifyConfig; |
|
} |
|
|
|
// Project configuration. |
|
grunt.initConfig({ |
|
pkg: grunt.file.readJSON("package.json"), |
|
uglify: createUglifyConfig("js"), |
|
clean: ["dist"], |
|
karma: { |
|
options: { |
|
configFile: 'karma.conf.js' |
|
}, |
|
unit: { |
|
runnerPort: 9999, |
|
singleRun: true, |
|
browsers: ["Chrome"], //will later add extra test targets |
|
logLevel: 'ERROR' |
|
} |
|
}, |
|
bump: { |
|
options: { |
|
files: ['package.json', 'bower.json', 'composer.json', 'component.json'], |
|
updateConfigs: ['pkg'], |
|
commit: false, |
|
createTag: false, |
|
push: false |
|
} |
|
}, |
|
release: { |
|
options: { |
|
bump: false, |
|
commitMessage: 'Inputmask <%= version %>' |
|
} |
|
}, |
|
nugetpack: { |
|
dist: { |
|
src: function () { |
|
return 'nuspecs/Inputmask.nuspec'; |
|
}(), |
|
dest: 'build/', |
|
options: { |
|
version: '<%= pkg.version %>' |
|
} |
|
} |
|
}, |
|
nugetpush: { |
|
dist: { |
|
src: 'build/InputMask.<%= pkg.version %>.nupkg', |
|
options: { |
|
source: "https://www.nuget.org" |
|
} |
|
} |
|
}, |
|
shell: { |
|
options: { |
|
stderr: false |
|
}, |
|
gitcommitchanges: { |
|
command: ['git add .', |
|
'git reset -- package.json', |
|
'git commit -m "Inputmask <%= pkg.version %>"' |
|
].join('&&') |
|
} |
|
}, |
|
eslint: { |
|
target: "{extra/*,js}/*.js" |
|
}, |
|
availabletasks: { |
|
tasks: { |
|
options: { |
|
filter: 'exclude', |
|
tasks: ['availabletasks', 'default', 'updateDistConfig'], |
|
showTasks: ['user'] |
|
} |
|
} |
|
}, |
|
webpack: { |
|
build: webpackConfig, |
|
qunit: qunitWebpackConfig |
|
} |
|
}); |
|
|
|
// Load the plugin that provides the tasks. |
|
require('load-grunt-tasks')(grunt); |
|
|
|
grunt.registerTask('publish:patch', ['clean', 'bump:patch', 'webpack:build', 'uglify', 'shell:gitcommitchanges', 'release', 'nugetpack', 'nugetpush']); |
|
grunt.registerTask('publish:minor', ['clean', 'bump:minor', 'webpack:build', 'uglify', 'shell:gitcommitchanges', 'release', 'nugetpack', 'nugetpush']); |
|
grunt.registerTask('publish:major', ['clean', 'bump:major', 'webpack:build', 'uglify', 'shell:gitcommitchanges', 'release', 'nugetpack', 'nugetpush']); |
|
grunt.registerTask('validate', ['webpack:qunit', 'eslint', 'karma']); |
|
grunt.registerTask('build', ['bump:prerelease', 'clean', 'webpack:build', 'uglify']); |
|
grunt.registerTask('default', ["availabletasks"]); |
|
};
|
|
|