1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- #!/usr/bin/env node
- 'use strict';
- /*!
- * Script to generate SRI hashes for use in our docs.
- * Remember to use the same vendor files as the CDN ones,
- * otherwise the hashes won't match!
- *
- * Copyright 2017-2019 The Bootstrap Authors
- * Copyright 2017-2019 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
- var crypto = require('crypto');
- var fs = require('fs');
- var path = require('path');
- var replace = require('replace-in-file');
- var configFile = path.join(__dirname, '../_config.yml');
- // Array of objects which holds the files to generate SRI hashes for.
- // `file` is the path from the root folder
- // `configPropertyName` is the _config.yml variable's name of the file
- var files = [
- {
- file: 'dist/css/bootstrap.min.css',
- configPropertyName: 'css_hash'
- },
- {
- file: 'dist/css/bootstrap-theme.min.css',
- configPropertyName: 'css_theme_hash'
- },
- {
- file: 'dist/js/bootstrap.min.js',
- configPropertyName: 'js_hash'
- }
- ];
- files.forEach(function (file) {
- fs.readFile(file.file, 'utf8', function (err, data) {
- if (err) {
- throw err;
- }
- var algo = 'sha384';
- var hash = crypto.createHash(algo).update(data, 'utf8').digest('base64');
- var integrity = algo + '-' + hash;
- console.log(file.configPropertyName + ': ' + integrity);
- try {
- replace.sync({
- files: configFile,
- from: new RegExp('(\\s' + file.configPropertyName + ':\\s+"|\')(\\S+)("|\')'),
- to: '$1' + integrity + '$3'
- });
- } catch (error) {
- console.error('Error occurred:', error);
- }
- });
- });
|