Skip to content

Commit 5bfc494

Browse files
committed
Update build/release scripts a bit to be a little less fragile
1 parent 067a4da commit 5bfc494

File tree

10 files changed

+79
-24
lines changed

10 files changed

+79
-24
lines changed

Makefile

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,7 @@ node_modules: package.json
5151
#
5252
# Target for updating version.
5353

54-
version: package.json src/version.js
55-
@$(ROLLUP) src/version.js -o build/version.js -f cjs
54+
version: package.json
5655
node scripts/version
5756

5857
#
@@ -65,7 +64,7 @@ README.md: $(SNIPPET_OUT) version
6564
# Target for `amplitude.js` file.
6665
#
6766

68-
$(OUT): node_modules $(SRC) version rollup.config.js rollup.min.js
67+
$(OUT): node_modules $(SRC) package.json rollup.config.js rollup.min.js
6968
@$(JSHINT) --verbose $(SRC)
7069
@NODE_ENV=production $(ROLLUP) --config rollup.config.js
7170
@NODE_ENV=production $(ROLLUP) --config rollup.nocompat.js

package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
"@babel/plugin-proposal-object-rest-spread": "^7.3.4",
2222
"@babel/preset-env": "^7.3.4",
2323
"chai": "^4.1.2",
24+
"date-fns": "^1.30.1",
2425
"express": "^4.16.2",
2526
"fs-extra": "^4.0.2",
2627
"jsdoc": "3.4.0",
@@ -35,10 +36,12 @@
3536
"karma-sinon": "^1.0.5",
3637
"karma-sourcemap-loader": "^0.3.7",
3738
"mocha": "^4.0.1",
39+
"prettier": "^1.16.4",
3840
"requirejs": "^2.3.6",
3941
"rollup": "^1.4.1",
4042
"rollup-plugin-babel": "^4.3.2",
4143
"rollup-plugin-commonjs": "^9.2.1",
44+
"rollup-plugin-json": "^4.0.0",
4245
"rollup-plugin-legacy": "^1.0.0",
4346
"rollup-plugin-node-resolve": "^4.0.1",
4447
"rollup-plugin-replace": "^2.1.0",

rollup.config.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import resolve from 'rollup-plugin-node-resolve';
22
import commonjs from 'rollup-plugin-commonjs';
33
import replace from 'rollup-plugin-replace';
44
import babel from 'rollup-plugin-babel';
5+
import json from 'rollup-plugin-json';
56

67
export default {
78
input: 'src/index.js',
@@ -11,6 +12,7 @@ export default {
1112
format: 'umd',
1213
},
1314
plugins: [
15+
json(),
1416
babel({
1517
exclude: 'node_modules/**',
1618
plugins: ['@babel/plugin-proposal-object-rest-spread'],

rollup.nocompat.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import resolve from 'rollup-plugin-node-resolve';
22
import commonjs from 'rollup-plugin-commonjs';
33
import replace from 'rollup-plugin-replace';
44
import babel from 'rollup-plugin-babel';
5+
import json from 'rollup-plugin-json';
56

67
export default {
78
input: 'src/index.js',
@@ -11,6 +12,7 @@ export default {
1112
format: 'umd',
1213
},
1314
plugins: [
15+
json(),
1416
babel({
1517
exclude: 'node_modules/**',
1618
plugins: ['@babel/plugin-proposal-object-rest-spread'],

scripts/version.js

Lines changed: 40 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,48 @@
1-
var fs = require('fs');
2-
var path = require('path');
3-
var package = require('../package');
4-
var previous = require('../build/version');
1+
const fs = require('fs');
2+
const path = require('path');
3+
const {version} = require('../package');
4+
const {format} = require('date-fns');
5+
const crypto = require('crypto');
56

6-
var version = package.version;
7+
const cwd = process.cwd();
78

8-
var cwd = process.cwd();
9-
10-
function replaceVersion(filepath) {
9+
function replaceTextInFile(filepath, match, replacement) {
1110
var filename = path.join(cwd, filepath);
12-
fs.writeFileSync(filename, fs.readFileSync(filename, 'utf-8').split(previous).join(version));
13-
console.log('Updated ', filepath);
11+
12+
const updatedText = fs
13+
.readFileSync(filename, 'utf-8')
14+
.replace(match, replacement);
15+
16+
if (updatedText.indexOf(replacement) === -1) {
17+
throw new Error(`Failed to update text in ${filepath}`);
18+
}
19+
20+
fs.writeFileSync(filename, updatedText);
21+
22+
console.log(`Updated ${filepath}: ${replacement}`);
1423
}
1524

16-
console.log('Updating to version ' + version);
25+
// Update version in snippet
26+
replaceTextInFile(
27+
path.join('src', 'amplitude-snippet.js'),
28+
/cdn\.amplitude\.com\/libs\/amplitude-[0-9]+\.[0-9]+\.[0-9]+-min\.gz\.js/,
29+
`cdn.amplitude.com/libs/amplitude-${version}-min.gz.js`,
30+
);
1731

18-
var files = [
19-
'README.md',
32+
// Update integrity hash in snippet
33+
const sdkText = fs.readFileSync(path.join('dist', `amplitude-${version}-min.js`), 'utf-8');
34+
const hash = crypto.createHash('sha384').update(sdkText).digest('base64');
35+
replaceTextInFile(
2036
path.join('src', 'amplitude-snippet.js'),
21-
path.join('src', 'version.js'),
22-
];
23-
files.map(replaceVersion);
37+
/as.integrity = 'sha384-[a-zA-Z0-9+\/]+';/,
38+
`as.integrity = 'sha384-${hash}';`,
39+
);
40+
41+
// Update version and relase date in readme
42+
replaceTextInFile(
43+
'README.md',
44+
/\[[0-9]+\.[0-9]+\.[0-9]+ - Released on [A-Z][a-z]+ [0-9]+, [0-9]{4}]/,
45+
`[${version} - Released on ${format(new Date(), 'MMMM D, YYYY')}]`,
46+
);
2447

25-
console.log('Updated version from', previous, 'to', version);
48+
console.log(`Updated version to ${version}`);

src/amplitude-client.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import type from './type';
1010
import UAParser from '@amplitude/ua-parser-js';
1111
import utils from './utils';
1212
import UUID from './uuid';
13-
import version from './version';
13+
import { version } from '../package.json';
1414
import DEFAULT_OPTIONS from './options';
1515

1616
/**

src/amplitude-snippet.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22
var amplitude = window.amplitude || {'_q':[],'_iq':{}};
33
var as = document.createElement('script');
44
as.type = 'text/javascript';
5+
as.integrity = 'sha384-7+UHB4oLzjytAiNjhUplOzn7xgZx8C5tV7Ke7xGI96rgoInU9Jzmxmha6CbA/SWo';
6+
as.crossOrigin = 'anonymous';
57
as.async = true;
6-
as.src = 'https://cdn.amplitude.com/libs/amplitude-4.6.0-min.gz.js';
8+
as.src = 'https://cdn.amplitude.com/libs/amplitude-5.2.0-min.gz.js';
79
as.onload = function() {if(!window.amplitude.runQueuedFunctions) {console.log('[Amplitude] Error: could not load SDK');}};
810
var s = document.getElementsByTagName('script')[0];
911
s.parentNode.insertBefore(as, s);

src/amplitude.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import Identify from './identify';
44
import Revenue from './revenue';
55
import type from './type';
66
import utils from './utils';
7-
import version from './version';
7+
import { version } from '../package.json';
88
import DEFAULT_OPTIONS from './options';
99

1010
/**

src/version.js

Lines changed: 0 additions & 1 deletion
This file was deleted.

yarn.lock

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1202,6 +1202,11 @@ custom-event@~1.0.0:
12021202
resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425"
12031203
integrity sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=
12041204

1205+
date-fns@^1.30.1:
1206+
version "1.30.1"
1207+
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c"
1208+
integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==
1209+
12051210
date-format@^2.0.0:
12061211
version "2.0.0"
12071212
resolved "https://registry.yarnpkg.com/date-format/-/date-format-2.0.0.tgz#7cf7b172f1ec564f0003b39ea302c5498fb98c8f"
@@ -2782,6 +2787,11 @@ posix-character-classes@^0.1.0:
27822787
resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
27832788
integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=
27842789

2790+
prettier@^1.16.4:
2791+
version "1.16.4"
2792+
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.4.tgz#73e37e73e018ad2db9c76742e2647e21790c9717"
2793+
integrity sha512-ZzWuos7TI5CKUeQAtFd6Zhm2s6EpAD/ZLApIhsF9pRvRtM1RFo61dM/4MSRUA0SuLugA/zgrZD8m0BaY46Og7g==
2794+
27852795
private@^0.1.6:
27862796
version "0.1.8"
27872797
resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff"
@@ -3023,6 +3033,13 @@ rollup-plugin-commonjs@^9.2.1:
30233033
resolve "^1.10.0"
30243034
rollup-pluginutils "^2.3.3"
30253035

3036+
rollup-plugin-json@^4.0.0:
3037+
version "4.0.0"
3038+
resolved "https://registry.yarnpkg.com/rollup-plugin-json/-/rollup-plugin-json-4.0.0.tgz#a18da0a4b30bf5ca1ee76ddb1422afbb84ae2b9e"
3039+
integrity sha512-hgb8N7Cgfw5SZAkb3jf0QXii6QX/FOkiIq2M7BAQIEydjHvTyxXHQiIzZaTFgx1GK0cRCHOCBHIyEkkLdWKxow==
3040+
dependencies:
3041+
rollup-pluginutils "^2.5.0"
3042+
30263043
rollup-plugin-legacy@^1.0.0:
30273044
version "1.0.0"
30283045
resolved "https://registry.yarnpkg.com/rollup-plugin-legacy/-/rollup-plugin-legacy-1.0.0.tgz#d08bdfc4410bd13827f4278c51870d3d8dbd1ea3"
@@ -3074,6 +3091,14 @@ rollup-pluginutils@^2.0.1, rollup-pluginutils@^2.3.0, rollup-pluginutils@^2.3.3:
30743091
estree-walker "^0.6.0"
30753092
micromatch "^3.1.10"
30763093

3094+
rollup-pluginutils@^2.5.0:
3095+
version "2.5.0"
3096+
resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.5.0.tgz#23be0f05ac3972ea7b08fc7870cb91fde5b23a09"
3097+
integrity sha512-9Muh1H+XB5f5ONmKMayUoTYR1EZwHbwJJ9oZLrKT5yuTf/RLIQ5mYIGsrERquVucJmjmaAW0Y7+6Qo1Ep+5w3Q==
3098+
dependencies:
3099+
estree-walker "^0.6.0"
3100+
micromatch "^3.1.10"
3101+
30773102
rollup@^1.4.1:
30783103
version "1.4.1"
30793104
resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.4.1.tgz#cc03ef6fb49dd72a878e3da0131c0a3696de14a7"

0 commit comments

Comments
 (0)