[docs] Automate SRI hash generation with rake task
Paul O’Shannessy committed
Feb 10, 2016 at 12:04 UTC
3ce7e91946aff88231964d446cb89fa1543057b7
3 files changed
+39
-11
docs/Rakefile
+19
@@ -24,6 +24,25 @@ task :update_version do
24
end
25
end
26
27
+desc "update SRI hashes"
28
+task :update_hashes do
29
+ map = {
30
+ 'react.js': 'dev',
31
+ 'react.min.js': 'prod',
32
+ 'react-with-addons.js': 'addons_dev',
33
+ 'react-with-addons.min.js': 'addons_prod',
34
+ 'react-dom.js': 'dom_dev',
35
+ 'react-dom.min.js': 'dom_prod',
36
+ 'react-dom-server.js': 'dom_server_dev',
37
+ 'react-dom-server.min.js': 'dom_server_prod'
38
+ }
39
+ site_config = YAML.load_file('_config.yml')
40
+ map.each do |file, key|
41
+ site_config['react_hashes'][key] = `openssl dgst -sha384 -binary ../../react-bower/#{file} | openssl base64 -A`
42
+ end
43
+ File.open('_config.yml', 'w+') { |f| f.write(site_config.to_yaml) }
44
+end
45
+
46
desc "update acknowledgements list"
47
task :update_acknowledgements do
48
authors = File.readlines('../AUTHORS').map {|author| author.gsub(/ <.*\n/,'')}
docs/_config.yml
+12
-3
@@ -2,9 +2,9 @@
2
name: React
3
description: A JavaScript library for building user interfaces
4
url: https://facebook.github.io
5
-baseurl: /react
6
-permalink: /blog/:year/:month/:day/:title.html
7
-paginate_path: /blog/page:num/
5
+baseurl: "/react"
6
+permalink: "/blog/:year/:month/:day/:title.html"
7
+paginate_path: "/blog/page:num/"
8
relative_permalinks: true
9
paginate: 5
10
timezone: America/Los_Angeles
@@ -37,3 +37,12 @@ sass:
37
gems:
38
- jekyll-redirect-from
39
react_version: 0.14.7
40
+react_hashes:
41
+ dev: xQae1pUPdAKUe0u0KUTNt09zzdwheX4VSUsV8vatqM+t6X7rta01qOzessL808ox
42
+ prod: zTm/dblzLXQNp3CgY+hfaC/WJ6h4XtNrePh2CW2+rO9GPuNiPb9jmthvAL+oI/dQ
43
+ addons_dev: I5TF2q2QDmB31aN5lcClArdUo+WJH/Yi3hcH3PBVXFe5DYtYCFh7Jx/dmpba12zn
44
+ addons_prod: KPHTQfiYMhtsIRbZcY4ri1lBYZQbj4ePsSdzODR2Bu5L5ts3APVyqwKPBThO5Hgc
45
+ dom_dev: A1t0GCrR06cTHvMjaxeSE8XOiz6j7NvWdmxhN/9z748wEvJTVk13Rr8gMzTUnd8G
46
+ dom_prod: ntqCsHbLdMxT352UbhPbT7fqjE8xi4jLmQYQa8mYR+ylAapbXRfdsDweueDObf7m
47
+ dom_server_dev: 3I5+eGB/ILYa6pQQX+rM9O0SyDltamM40RiZ5JvIijSYEfVGZU0vY4Iwx9a1eYyD
48
+ dom_server_prod: Kt9dEqXzv00orFPW2o3H+kxQtSiNO8EqXsXJT3i99rCcp74N/Km98V0kUxAzy44k
docs/downloads.md
+8
-8
@@ -24,32 +24,32 @@ If you're just starting out, make sure to use the development version.
24
The uncompressed, development version of [react.js](https://fb.me/react-{{site.react_version}}.js) and [react-dom.js](https://fb.me/react-dom-{{site.react_version}}.js) with inline documentation (you need both files).
25
26
```html
27
-<script src="https://fb.me/react-{{site.react_version}}.js" integrity="sha384-xQae1pUPdAKUe0u0KUTNt09zzdwheX4VSUsV8vatqM+t6X7rta01qOzessL808ox" crossorigin="anonymous"></script>
28
-<script src="https://fb.me/react-dom-{{site.react_version}}.js" integrity="sha384-A1t0GCrR06cTHvMjaxeSE8XOiz6j7NvWdmxhN/9z748wEvJTVk13Rr8gMzTUnd8G" crossorigin="anonymous"></script>
27
+<script src="https://fb.me/react-{{site.react_version}}.js" integrity="sha384-{{site.react_hashes.dev}}" crossorigin="anonymous"></script>
28
+<script src="https://fb.me/react-dom-{{site.react_version}}.js" integrity="sha384-{{site.react_hashes.dom_dev}}" crossorigin="anonymous"></script>
29
```
30
31
#### React {{site.react_version}} (production)
32
The compressed, production version of [react.js](https://fb.me/react-{{site.react_version}}.min.js) and [react-dom.js](https://fb.me/react-dom-{{site.react_version}}.min.js) (you need both).
33
34
```html
35
-<script src="https://fb.me/react-{{site.react_version}}.min.js" integrity="sha384-zTm/dblzLXQNp3CgY+hfaC/WJ6h4XtNrePh2CW2+rO9GPuNiPb9jmthvAL+oI/dQ" crossorigin="anonymous"></script>
36
-<script src="https://fb.me/react-dom-{{site.react_version}}.min.js" integrity="sha384-ntqCsHbLdMxT352UbhPbT7fqjE8xi4jLmQYQa8mYR+ylAapbXRfdsDweueDObf7m" crossorigin="anonymous"></script>
35
+<script src="https://fb.me/react-{{site.react_version}}.min.js" integrity="sha384-{{site.react_hashes.prod}}" crossorigin="anonymous"></script>
36
+<script src="https://fb.me/react-dom-{{site.react_version}}.min.js" integrity="sha384-{{site.react_hashes.dom_prod}}" crossorigin="anonymous"></script>
37
```
38
39
#### React with Add-Ons {{site.react_version}} (development)
40
The uncompressed, development version of React with [optional add-ons](/react/docs/addons.html).
41
42
```html
43
-<script src="https://fb.me/react-with-addons-{{site.react_version}}.js" integrity="sha384-I5TF2q2QDmB31aN5lcClArdUo+WJH/Yi3hcH3PBVXFe5DYtYCFh7Jx/dmpba12zn" crossorigin="anonymous"></script>
44
-<script src="https://fb.me/react-dom-{{site.react_version}}.js" integrity="sha384-A1t0GCrR06cTHvMjaxeSE8XOiz6j7NvWdmxhN/9z748wEvJTVk13Rr8gMzTUnd8G" crossorigin="anonymous"></script>
43
+<script src="https://fb.me/react-with-addons-{{site.react_version}}.js" integrity="sha384-{{site.react_hashes.addons_dev}}" crossorigin="anonymous"></script>
44
+<script src="https://fb.me/react-dom-{{site.react_version}}.js" integrity="sha384-{{site.react_hashes.dom_dev}}" crossorigin="anonymous"></script>
45
```
46
47
#### React with Add-Ons {{site.react_version}} (production)
48
The compressed, production version of React with [optional add-ons](/react/docs/addons.html).
49
50
```html
51
-<script src="https://fb.me/react-with-addons-{{site.react_version}}.min.js" integrity="sha384-KPHTQfiYMhtsIRbZcY4ri1lBYZQbj4ePsSdzODR2Bu5L5ts3APVyqwKPBThO5Hgc" crossorigin="anonymous"></script>
52
-<script src="https://fb.me/react-dom-{{site.react_version}}.min.js" integrity="sha384-ntqCsHbLdMxT352UbhPbT7fqjE8xi4jLmQYQa8mYR+ylAapbXRfdsDweueDObf7m" crossorigin="anonymous"></script>
51
+<script src="https://fb.me/react-with-addons-{{site.react_version}}.min.js" integrity="sha384-{{site.react_hashes.addons_prod}}" crossorigin="anonymous"></script>
52
+<script src="https://fb.me/react-dom-{{site.react_version}}.min.js" integrity="sha384-{{site.react_hashes.dom_prod}}" crossorigin="anonymous"></script>
53
```
54
55
All scripts are also available via [CDNJS](https://cdnjs.com/libraries/react/).