Skip to content

Commit 8634c00

Browse files
jmervinescottgonzalez
authored andcommitted
Build: Add SRI support
Closes gh-22
1 parent 1a5a1c9 commit 8634c00

File tree

2 files changed

+30
-7
lines changed

2 files changed

+30
-7
lines changed

Gruntfile.js

+29-7
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,26 @@ var _ = require( "underscore" ),
66
http = require( "http" );
77

88
grunt.loadNpmTasks( "grunt-jquery-content" );
9+
grunt.loadNpmTasks( "grunt-sri" );
910

1011
grunt.initConfig({
1112
wordpress: (function() {
1213
var config = require( "./config" );
1314
config.dir = "dist/wordpress";
1415
return config;
15-
})()
16+
})(),
17+
sri: {
18+
generate: {
19+
src: [
20+
"cdn/**/*.js",
21+
"cdn/**/*.css"
22+
],
23+
options: {
24+
algorithms: [ "sha256" ],
25+
dest: "dist/resources/sri-directives.json"
26+
}
27+
}
28+
}
1629
});
1730

1831
grunt.registerTask( "build-index", function() {
@@ -265,15 +278,19 @@ grunt.registerTask( "build-index", function() {
265278
};
266279
}
267280

268-
Handlebars.registerHelper( "release", function( prefix, release ) {
269-
var html = prefix + " " + release.version + " - " +
270-
"<a href='/" + release.filename + "'>uncompressed</a>";
281+
var sriHashes = require( "./dist/resources/sri-directives.json" );
282+
function href( file, label ) {
283+
var sri = "sha256-" + sriHashes[ "@cdn/" + file ][ "hashes" ][ "sha256" ];
284+
return "<a class='open-sri-modal' href='/" + file + "' data-hash='" + sri + "'>" + label + "</a>";
285+
}
271286

287+
Handlebars.registerHelper( "release", function( prefix, release ) {
288+
var html = prefix + " " + release.version + " - " + href( release.filename, "uncompressed" );
272289
if ( release.minified ) {
273-
html += ", <a href='/" + release.minified + "'>minified</a>";
290+
html += ", " + href( release.minified, "minified" );
274291
}
275292
if ( release.packed ) {
276-
html += ", <a href='/" + release.packed + "'>packed</a>";
293+
html += ", " + href( release.packed, "packed" );
277294
}
278295

279296
return new Handlebars.SafeString( html );
@@ -360,7 +377,12 @@ grunt.registerTask( "reload-listings", function() {
360377
});
361378
});
362379

363-
grunt.registerTask( "build", [ "build-index" ] );
380+
grunt.registerTask( "ensure-dist-resources", function() {
381+
grunt.file.mkdir( "dist/resources" );
382+
});
383+
384+
grunt.registerTask( "sri-generate", [ "ensure-dist-resources", "sri:generate" ] );
385+
grunt.registerTask( "build", [ "sri-generate", "build-index" ] );
364386
grunt.registerTask( "deploy", [ "wordpress-deploy", "reload-listings" ] );
365387

366388
};

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
"dependencies": {
2323
"grunt": "0.4.5",
2424
"grunt-jquery-content": "3.0.0",
25+
"grunt-sri": "0.0.5",
2526
"semver": "2.0.11",
2627
"underscore": "1.5.1",
2728
"handlebars": "1.0.12"

0 commit comments

Comments
 (0)