mirror of
https://github.com/jquery/jquery-ui.git
synced 2024-12-23 01:24:22 +00:00
Build: Migrate to grunt 0.4. Rename to Gruntfile, upgrade to newer grunt-css and grunt-html, update custom tasks. Drop qunit-junit plugin, not worth the trouble. Update release script to run grunt-prepare after npm-install.
This commit is contained in:
parent
4d67f4f349
commit
f87b4e0f4a
@ -18,11 +18,11 @@ var
|
|||||||
|
|
||||||
uiFiles = coreFiles.map(function( file ) {
|
uiFiles = coreFiles.map(function( file ) {
|
||||||
return "ui/" + file;
|
return "ui/" + file;
|
||||||
}).concat( grunt.file.expandFiles( "ui/*.js" ).filter(function( file ) {
|
}).concat( expandFiles( "ui/*.js" ).filter(function( file ) {
|
||||||
return coreFiles.indexOf( file.substring(3) ) === -1;
|
return coreFiles.indexOf( file.substring(3) ) === -1;
|
||||||
})),
|
})),
|
||||||
|
|
||||||
allI18nFiles = grunt.file.expandFiles( "ui/i18n/*.js" ),
|
allI18nFiles = expandFiles( "ui/i18n/*.js" ),
|
||||||
|
|
||||||
cssFiles = [
|
cssFiles = [
|
||||||
"core",
|
"core",
|
||||||
@ -46,16 +46,42 @@ var
|
|||||||
|
|
||||||
// minified files
|
// minified files
|
||||||
minify = {
|
minify = {
|
||||||
"dist/jquery-ui.min.js": [ "<banner:meta.bannerAll>", "dist/jquery-ui.js" ],
|
options: {
|
||||||
"dist/i18n/jquery-ui-i18n.min.js": [ "<banner:meta.bannerI18n>", "dist/i18n/jquery-ui-i18n.js" ]
|
preserveComments: false
|
||||||
|
},
|
||||||
|
main: {
|
||||||
|
options: {
|
||||||
|
banner: createBanner( uiFiles )
|
||||||
|
},
|
||||||
|
files: {
|
||||||
|
"dist/jquery-ui.min.js": "dist/jquery-ui.js"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
i18n: {
|
||||||
|
options: {
|
||||||
|
banner: createBanner( allI18nFiles )
|
||||||
|
},
|
||||||
|
files: {
|
||||||
|
"dist/i18n/jquery-ui-i18n.min.js": "dist/i18n/jquery-ui-i18n.js"
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
minifyCSS = {
|
minifyCSS = {
|
||||||
"dist/jquery-ui.min.css": "dist/jquery-ui.css"
|
options: {
|
||||||
|
keepSpecialComments: 0
|
||||||
|
},
|
||||||
|
main: {
|
||||||
|
options: {
|
||||||
|
keepSpecialComments: '*'
|
||||||
|
},
|
||||||
|
src: "dist/jquery-ui.css",
|
||||||
|
dest: "dist/jquery-ui.min.css"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
compareFiles = {
|
compareFiles = {
|
||||||
all: [
|
files: [
|
||||||
"dist/jquery-ui.js",
|
"dist/jquery-ui.js",
|
||||||
"dist/jquery-ui.min.js"
|
"dist/jquery-ui.min.js"
|
||||||
]
|
]
|
||||||
@ -65,85 +91,102 @@ function mapMinFile( file ) {
|
|||||||
return "dist/" + file.replace( /\.js$/, ".min.js" ).replace( /ui\//, "minified/" );
|
return "dist/" + file.replace( /\.js$/, ".min.js" ).replace( /ui\//, "minified/" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function expandFiles( files ) {
|
||||||
|
return grunt.util._.pluck( grunt.file.expandMapping( files ), "src" ).map(function( values ) {
|
||||||
|
return values[ 0 ];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
uiFiles.concat( allI18nFiles ).forEach(function( file ) {
|
uiFiles.concat( allI18nFiles ).forEach(function( file ) {
|
||||||
minify[ mapMinFile( file ) ] = [ "<banner>", file ];
|
minify[ file ] = {
|
||||||
|
options: {
|
||||||
|
banner: createBanner()
|
||||||
|
},
|
||||||
|
files: {}
|
||||||
|
};
|
||||||
|
minify[ file ].files[ mapMinFile( file ) ] = file;
|
||||||
});
|
});
|
||||||
|
|
||||||
cssFiles.forEach(function( file ) {
|
cssFiles.forEach(function( file ) {
|
||||||
minifyCSS[ "dist/" + file.replace( /\.css$/, ".min.css" ).replace( /themes\/base\//, "themes/base/minified/" ) ] = [ "<banner>", "<strip_all_banners:" + file + ">" ];
|
minifyCSS[ file ] = {
|
||||||
|
options: {
|
||||||
|
banner: createBanner()
|
||||||
|
},
|
||||||
|
src: file,
|
||||||
|
dest: "dist/" + file.replace( /\.css$/, ".min.css" ).replace( /themes\/base\//, "themes/base/minified/" )
|
||||||
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
uiFiles.forEach(function( file ) {
|
uiFiles.forEach(function( file ) {
|
||||||
|
// TODO this doesn't do anything until https://github.com/rwldrn/grunt-compare-size/issues/13
|
||||||
compareFiles[ file ] = [ file, mapMinFile( file ) ];
|
compareFiles[ file ] = [ file, mapMinFile( file ) ];
|
||||||
});
|
});
|
||||||
|
|
||||||
// grunt plugins
|
// grunt plugins
|
||||||
|
grunt.loadNpmTasks( "grunt-contrib-jshint" );
|
||||||
|
grunt.loadNpmTasks( "grunt-contrib-uglify" );
|
||||||
|
grunt.loadNpmTasks( "grunt-contrib-concat" );
|
||||||
|
grunt.loadNpmTasks( "grunt-contrib-qunit" );
|
||||||
grunt.loadNpmTasks( "grunt-css" );
|
grunt.loadNpmTasks( "grunt-css" );
|
||||||
grunt.loadNpmTasks( "grunt-html" );
|
grunt.loadNpmTasks( "grunt-html" );
|
||||||
grunt.loadNpmTasks( "grunt-compare-size" );
|
grunt.loadNpmTasks( "grunt-compare-size" );
|
||||||
grunt.loadNpmTasks( "grunt-junit" );
|
|
||||||
grunt.loadNpmTasks( "grunt-git-authors" );
|
grunt.loadNpmTasks( "grunt-git-authors" );
|
||||||
// local testswarm and build tasks
|
// local testswarm and build tasks
|
||||||
grunt.loadTasks( "build/tasks" );
|
grunt.loadTasks( "build/tasks" );
|
||||||
|
|
||||||
grunt.registerHelper( "strip_all_banners", function( filepath ) {
|
|
||||||
return grunt.file.read( filepath ).replace( /^\s*\/\*[\s\S]*?\*\/\s*/g, "" );
|
|
||||||
});
|
|
||||||
|
|
||||||
function stripBanner( files ) {
|
|
||||||
return files.map(function( file ) {
|
|
||||||
return "<strip_all_banners:" + file + ">";
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function stripDirectory( file ) {
|
function stripDirectory( file ) {
|
||||||
// TODO: we're receiving the directive, so we need to strip the trailing >
|
|
||||||
// we should be receving a clean path without the directive
|
|
||||||
return file.replace( /.+\/(.+?)>?$/, "$1" );
|
return file.replace( /.+\/(.+?)>?$/, "$1" );
|
||||||
}
|
}
|
||||||
// allow access from banner template
|
|
||||||
global.stripDirectory = stripDirectory;
|
|
||||||
|
|
||||||
function createBanner( files ) {
|
function createBanner( files ) {
|
||||||
// strip folders
|
// strip folders
|
||||||
var fileNames = files && files.map( stripDirectory );
|
var fileNames = files && files.map( stripDirectory );
|
||||||
return "/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - " +
|
return "/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - " +
|
||||||
"<%= grunt.template.today('isoDate') %>\n" +
|
"<%= grunt.template.today('isoDate') %>\n" +
|
||||||
"<%= pkg.homepage ? '* ' + pkg.homepage + '\n' : '' %>" +
|
"<%= pkg.homepage ? '* ' + pkg.homepage + '\\n' : '' %>" +
|
||||||
"* Includes: " + (files ? fileNames.join(", ") : "<%= stripDirectory(grunt.task.current.file.src[1]) %>") + "\n" +
|
(files ? "* Includes: " + fileNames.join(", ") + "\n" : "")+
|
||||||
"* Copyright <%= grunt.template.today('yyyy') %> <%= pkg.author.name %>;" +
|
"* Copyright <%= grunt.template.today('yyyy') %> <%= pkg.author.name %>;" +
|
||||||
" Licensed <%= _.pluck(pkg.licenses, 'type').join(', ') %> */";
|
" Licensed <%= _.pluck(pkg.licenses, 'type').join(', ') %> */\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
grunt.initConfig({
|
grunt.initConfig({
|
||||||
pkg: "<json:package.json>",
|
pkg: grunt.file.readJSON("package.json"),
|
||||||
files: {
|
files: {
|
||||||
dist: "<%= pkg.name %>-<%= pkg.version %>",
|
dist: "<%= pkg.name %>-<%= pkg.version %>",
|
||||||
cdn: "<%= pkg.name %>-<%= pkg.version %>-cdn",
|
cdn: "<%= pkg.name %>-<%= pkg.version %>-cdn",
|
||||||
themes: "<%= pkg.name %>-themes-<%= pkg.version %>"
|
themes: "<%= pkg.name %>-themes-<%= pkg.version %>"
|
||||||
},
|
},
|
||||||
meta: {
|
|
||||||
banner: createBanner(),
|
|
||||||
bannerAll: createBanner( uiFiles ),
|
|
||||||
bannerI18n: createBanner( allI18nFiles ),
|
|
||||||
bannerCSS: createBanner( cssFiles )
|
|
||||||
},
|
|
||||||
compare_size: compareFiles,
|
compare_size: compareFiles,
|
||||||
concat: {
|
concat: {
|
||||||
ui: {
|
ui: {
|
||||||
src: [ "<banner:meta.bannerAll>", stripBanner( uiFiles ) ],
|
options: {
|
||||||
|
banner: createBanner( uiFiles ),
|
||||||
|
stripBanners: {
|
||||||
|
block: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
src: uiFiles,
|
||||||
dest: "dist/jquery-ui.js"
|
dest: "dist/jquery-ui.js"
|
||||||
},
|
},
|
||||||
i18n: {
|
i18n: {
|
||||||
src: [ "<banner:meta.bannerI18n>", allI18nFiles ],
|
options: {
|
||||||
|
banner: createBanner( allI18nFiles )
|
||||||
|
},
|
||||||
|
src: allI18nFiles,
|
||||||
dest: "dist/i18n/jquery-ui-i18n.js"
|
dest: "dist/i18n/jquery-ui-i18n.js"
|
||||||
},
|
},
|
||||||
css: {
|
css: {
|
||||||
src: [ "<banner:meta.bannerCSS>", stripBanner( cssFiles ) ],
|
options: {
|
||||||
|
banner: createBanner( cssFiles ),
|
||||||
|
stripBanners: {
|
||||||
|
block: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
src: cssFiles,
|
||||||
dest: "dist/jquery-ui.css"
|
dest: "dist/jquery-ui.css"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
min: minify,
|
uglify: minify,
|
||||||
cssmin: minifyCSS,
|
cssmin: minifyCSS,
|
||||||
htmllint: {
|
htmllint: {
|
||||||
// ignore files that contain invalid html, used only for ajax content testing
|
// ignore files that contain invalid html, used only for ajax content testing
|
||||||
@ -158,7 +201,7 @@ grunt.initConfig({
|
|||||||
"jquery-*.js",
|
"jquery-*.js",
|
||||||
"MIT-LICENSE.txt",
|
"MIT-LICENSE.txt",
|
||||||
"README.md",
|
"README.md",
|
||||||
"grunt.js",
|
"Gruntfile.js",
|
||||||
"package.json",
|
"package.json",
|
||||||
"*.jquery.json",
|
"*.jquery.json",
|
||||||
"ui/**/*",
|
"ui/**/*",
|
||||||
@ -278,22 +321,43 @@ grunt.initConfig({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
qunit: {
|
qunit: {
|
||||||
files: grunt.file.expandFiles( "tests/unit/**/*.html" ).filter(function( file ) {
|
files: expandFiles( "tests/unit/**/*.html" ).filter(function( file ) {
|
||||||
// disabling everything that doesn't (quite) work with PhantomJS for now
|
// disabling everything that doesn't (quite) work with PhantomJS for now
|
||||||
// TODO except for all|index|test, try to include more as we go
|
// TODO except for all|index|test, try to include more as we go
|
||||||
return !( /(all|index|test|dialog|dialog_deprecated|tabs|tooltip)\.html$/ ).test( file );
|
return !( /(all|index|test|dialog|dialog_deprecated|tabs|tooltip)\.html$/ ).test( file );
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
lint: {
|
jshint: {
|
||||||
ui: "ui/*.js",
|
ui: {
|
||||||
grunt: [ "grunt.js", "build/**/*.js" ],
|
options: {
|
||||||
tests: "tests/unit/**/*.js"
|
jshintrc: "ui/.jshintrc"
|
||||||
|
},
|
||||||
|
files: {
|
||||||
|
src: "ui/*.js"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
grunt: {
|
||||||
|
options: {
|
||||||
|
jshintrc: ".jshintrc"
|
||||||
|
},
|
||||||
|
files: {
|
||||||
|
src: [ "Gruntfile.js", "build/**/*.js" ]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
tests: {
|
||||||
|
options: {
|
||||||
|
jshintrc: "tests/.jshintrc"
|
||||||
|
},
|
||||||
|
files: {
|
||||||
|
src: "tests/unit/**/*.js"
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
csslint: {
|
csslint: {
|
||||||
// nothing: []
|
// nothing: []
|
||||||
// TODO figure out what to check for, then fix and enable
|
// TODO figure out what to check for, then fix and enable
|
||||||
base_theme: {
|
base_theme: {
|
||||||
src: grunt.file.expandFiles( "themes/base/*.css" ).filter(function( file ) {
|
src: expandFiles( "themes/base/*.css" ).filter(function( file ) {
|
||||||
// TODO remove items from this list once rewritten
|
// TODO remove items from this list once rewritten
|
||||||
return !( /(button|datepicker|core|dialog|theme)\.css$/ ).test( file );
|
return !( /(button|datepicker|core|dialog|theme)\.css$/ ).test( file );
|
||||||
}),
|
}),
|
||||||
@ -307,39 +371,15 @@ grunt.initConfig({
|
|||||||
"compatible-vendor-prefixes": false
|
"compatible-vendor-prefixes": false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
|
||||||
jshint: (function() {
|
|
||||||
function parserc( path ) {
|
|
||||||
var rc = grunt.file.readJSON( (path || "") + ".jshintrc" ),
|
|
||||||
settings = {
|
|
||||||
options: rc,
|
|
||||||
globals: {}
|
|
||||||
};
|
|
||||||
|
|
||||||
(rc.predef || []).forEach(function( prop ) {
|
|
||||||
settings.globals[ prop ] = true;
|
|
||||||
});
|
|
||||||
delete rc.predef;
|
|
||||||
|
|
||||||
return settings;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
|
||||||
grunt: parserc(),
|
|
||||||
ui: parserc( "ui/" ),
|
|
||||||
// TODO: `evil: true` is only for document.write() https://github.com/jshint/jshint/issues/519
|
|
||||||
// TODO: don't create so many globals in tests
|
|
||||||
tests: parserc( "tests/" )
|
|
||||||
};
|
|
||||||
})()
|
|
||||||
});
|
});
|
||||||
|
|
||||||
grunt.registerTask( "default", "lint csslint htmllint qunit" );
|
grunt.registerTask( "default", [ "jshint", "csslint", "htmllint", "qunit" ] );
|
||||||
grunt.registerTask( "sizer", "concat:ui min:dist/jquery-ui.min.js compare_size:all" );
|
grunt.registerTask( "sizer", [ "concat:ui", "uglify:main", "compare_size:all" ] );
|
||||||
grunt.registerTask( "sizer_all", "concat:ui min compare_size" );
|
grunt.registerTask( "sizer_all", [ "concat:ui", "uglify", "compare_size" ] );
|
||||||
grunt.registerTask( "build", "concat min cssmin copy:dist_units_images" );
|
grunt.registerTask( "build", [ "concat", "uglify", "cssmin", "copy:dist_units_images" ] );
|
||||||
grunt.registerTask( "release", "clean build copy:dist copy:dist_min copy:dist_min_images copy:dist_css_min md5:dist zip:dist" );
|
grunt.registerTask( "release", "clean build copy:dist copy:dist_min copy:dist_min_images copy:dist_css_min md5:dist zip:dist".split( " " ) );
|
||||||
grunt.registerTask( "release_themes", "release generate_themes copy:themes md5:themes zip:themes" );
|
grunt.registerTask( "release_themes", "release generate_themes copy:themes md5:themes zip:themes".split( " " ) );
|
||||||
grunt.registerTask( "release_cdn", "release_themes copy:cdn copy:cdn_min copy:cdn_i18n copy:cdn_i18n_min copy:cdn_min_images copy:cdn_themes md5:cdn zip:cdn" );
|
grunt.registerTask( "release_cdn", "release_themes copy:cdn copy:cdn_min copy:cdn_i18n copy:cdn_i18n_min copy:cdn_min_images copy:cdn_themes md5:cdn zip:cdn".split( " " ) );
|
||||||
|
|
||||||
};
|
};
|
@ -72,6 +72,9 @@ function cloneRepo() {
|
|||||||
if ( exec( "npm install download.jqueryui.com" ).code !== 0 ) {
|
if ( exec( "npm install download.jqueryui.com" ).code !== 0 ) {
|
||||||
abort( "Error installing dependencies." );
|
abort( "Error installing dependencies." );
|
||||||
}
|
}
|
||||||
|
if ( exec( "cd node_modules/download.jqueryui.com && grunt prepare" ).code !== 0 ) {
|
||||||
|
abort( "Error installing dependencies." );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
echo();
|
echo();
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,19 @@ module.exports = function( grunt ) {
|
|||||||
var path = require( "path" ),
|
var path = require( "path" ),
|
||||||
fs = require( "fs" );
|
fs = require( "fs" );
|
||||||
|
|
||||||
|
function expandFiles( files ) {
|
||||||
|
return grunt.util._.pluck( grunt.file.expandMapping( files ), "src" ).filter(function(filepath) {
|
||||||
|
// restrict to files, exclude folders
|
||||||
|
try {
|
||||||
|
return fs.statSync( filepath[ 0 ] ).isFile();
|
||||||
|
} catch(e) {
|
||||||
|
throw grunt.task.taskError(e.message, e);
|
||||||
|
}
|
||||||
|
}).map(function( values ) {
|
||||||
|
return values[ 0 ];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
grunt.registerTask( "manifest", "Generate jquery.json manifest files", function() {
|
grunt.registerTask( "manifest", "Generate jquery.json manifest files", function() {
|
||||||
var pkg = grunt.config( "pkg" ),
|
var pkg = grunt.config( "pkg" ),
|
||||||
base = {
|
base = {
|
||||||
@ -97,8 +110,8 @@ grunt.registerMultiTask( "copy", "Copy files to destination folder and replace @
|
|||||||
grunt.file.copy( src, dest );
|
grunt.file.copy( src, dest );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var files = grunt.file.expandFiles( this.file.src ),
|
var files = expandFiles( this.filesSrc ),
|
||||||
target = this.file.dest + "/",
|
target = this.data.dest + "/",
|
||||||
strip = this.data.strip,
|
strip = this.data.strip,
|
||||||
renameCount = 0,
|
renameCount = 0,
|
||||||
fileName;
|
fileName;
|
||||||
@ -121,28 +134,11 @@ grunt.registerMultiTask( "copy", "Copy files to destination folder and replace @
|
|||||||
|
|
||||||
|
|
||||||
grunt.registerMultiTask( "zip", "Create a zip file for release", function() {
|
grunt.registerMultiTask( "zip", "Create a zip file for release", function() {
|
||||||
// TODO switch back to adm-zip for better cross-platform compability once it actually works
|
|
||||||
// 0.1.3 works, but result can't be unzipped
|
|
||||||
// its also a lot slower then zip program, probably due to how its used...
|
|
||||||
// var files = grunt.file.expandFiles( "dist/" + this.file.src + "/**/*" );
|
|
||||||
// grunt.log.writeln( "Creating zip file " + this.file.dest );
|
|
||||||
|
|
||||||
//var AdmZip = require( "adm-zip" );
|
|
||||||
//var zip = new AdmZip();
|
|
||||||
//files.forEach(function( file ) {
|
|
||||||
// grunt.verbose.writeln( "Zipping " + file );
|
|
||||||
// // rewrite file names from dist folder (created by build), drop the /dist part
|
|
||||||
// zip.addFile(file.replace(/^dist/, "" ), fs.readFileSync( file ) );
|
|
||||||
//});
|
|
||||||
//zip.writeZip( "dist/" + this.file.dest );
|
|
||||||
//grunt.log.writeln( "Wrote " + files.length + " files to " + this.file.dest );
|
|
||||||
|
|
||||||
var done = this.async(),
|
var done = this.async(),
|
||||||
dest = this.file.dest,
|
dest = this.data.dest;
|
||||||
src = grunt.template.process( this.file.src, grunt.config() );
|
grunt.util.spawn({
|
||||||
grunt.utils.spawn({
|
|
||||||
cmd: "zip",
|
cmd: "zip",
|
||||||
args: [ "-r", dest, src ],
|
args: [ "-r", dest, this.data.src ],
|
||||||
opts: {
|
opts: {
|
||||||
cwd: 'dist'
|
cwd: 'dist'
|
||||||
}
|
}
|
||||||
@ -159,19 +155,19 @@ grunt.registerMultiTask( "zip", "Create a zip file for release", function() {
|
|||||||
|
|
||||||
grunt.registerMultiTask( "md5", "Create list of md5 hashes for CDN uploads", function() {
|
grunt.registerMultiTask( "md5", "Create list of md5 hashes for CDN uploads", function() {
|
||||||
// remove dest file before creating it, to make sure itself is not included
|
// remove dest file before creating it, to make sure itself is not included
|
||||||
if ( fs.existsSync( this.file.dest ) ) {
|
if ( fs.existsSync( this.data.dest ) ) {
|
||||||
fs.unlinkSync( this.file.dest );
|
fs.unlinkSync( this.data.dest );
|
||||||
}
|
}
|
||||||
var crypto = require( "crypto" ),
|
var crypto = require( "crypto" ),
|
||||||
dir = this.file.src + "/",
|
dir = this.filesSrc + "/",
|
||||||
hashes = [];
|
hashes = [];
|
||||||
grunt.file.expandFiles( dir + "**/*" ).forEach(function( fileName ) {
|
expandFiles( dir + "**/*" ).forEach(function( fileName ) {
|
||||||
var hash = crypto.createHash( "md5" );
|
var hash = crypto.createHash( "md5" );
|
||||||
hash.update( grunt.file.read( fileName, "ascii" ) );
|
hash.update( grunt.file.read( fileName, "ascii" ) );
|
||||||
hashes.push( fileName.replace( dir, "" ) + " " + hash.digest( "hex" ) );
|
hashes.push( fileName.replace( dir, "" ) + " " + hash.digest( "hex" ) );
|
||||||
});
|
});
|
||||||
grunt.file.write( this.file.dest, hashes.join( "\n" ) + "\n" );
|
grunt.file.write( this.data.dest, hashes.join( "\n" ) + "\n" );
|
||||||
grunt.log.writeln( "Wrote " + this.file.dest + " with " + hashes.length + " hashes" );
|
grunt.log.writeln( "Wrote " + this.data.dest + " with " + hashes.length + " hashes" );
|
||||||
});
|
});
|
||||||
|
|
||||||
grunt.registerTask( "generate_themes", function() {
|
grunt.registerTask( "generate_themes", function() {
|
||||||
|
17
package.json
17
package.json
@ -53,13 +53,16 @@
|
|||||||
],
|
],
|
||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"grunt": "~0.3.17",
|
"grunt": "0.4.0",
|
||||||
"grunt-css": "0.2.0",
|
"grunt-contrib-jshint": "0.1.1",
|
||||||
"grunt-compare-size": "0.1.4",
|
"grunt-contrib-uglify": "0.1.1",
|
||||||
"grunt-html": "0.1.1",
|
"grunt-contrib-concat": "0.1.3",
|
||||||
"grunt-junit": "0.1.5",
|
"grunt-contrib-qunit": "0.1.1",
|
||||||
"grunt-git-authors": "1.0.0",
|
"grunt-css": "0.5.4",
|
||||||
"rimraf": "2.0.1",
|
"grunt-compare-size": "0.3.1",
|
||||||
|
"grunt-html": "0.3.3",
|
||||||
|
"grunt-git-authors": "1.1.0",
|
||||||
|
"rimraf": "2.1.4",
|
||||||
"testswarm": "1.0.0-alpha"
|
"testswarm": "1.0.0-alpha"
|
||||||
},
|
},
|
||||||
"keywords": []
|
"keywords": []
|
||||||
|
Loading…
Reference in New Issue
Block a user