Added command to build Chrome CRX
Brian Vaughn committed
Jun 18, 2019 at 15:44 UTC
0e4005e0a19761bff83c0329b4d46078c689ff37
5 files changed
+117
-7
.gitignore
+2
-1
@@ -12,4 +12,5 @@ yarn-error.log
12
yarn-error.log
13
.vscode
14
.idea
15
-.watchmanconfig
\ No newline at end of file
15
+.watchmanconfig
16
+*.pem
\ No newline at end of file
package.json
+4
-1
@@ -36,6 +36,7 @@
36
"build:extension": "cross-env NODE_ENV=production yarn run build:extension:chrome && yarn run build:extension:firefox",
37
"build:extension:dev": "cross-env NODE_ENV=development yarn run build:extension:chrome && yarn run build:extension:firefox",
38
"build:extension:chrome": "cross-env NODE_ENV=production node ./shells/browser/chrome/build",
39
+ "build:extension:chrome:crx": "cross-env NODE_ENV=production node ./shells/browser/chrome/build --crx",
40
"build:extension:chrome:dev": "cross-env NODE_ENV=development node ./shells/browser/chrome/build",
41
"build:extension:firefox": "cross-env NODE_ENV=production node ./shells/browser/firefox/build",
42
"build:extension:firefox:dev": "cross-env NODE_ENV=development node ./shells/browser/firefox/build",
@@ -90,6 +91,7 @@
91
"cli-spinners": "^1.0.0",
92
"clipboard-js": "^0.3.6",
93
"cross-env": "^5.2.0",
94
+ "crx": "^5.0.0",
95
"css-loader": "^1.0.1",
96
"error-stack-parser": "^2.0.2",
97
"es6-symbol": "3.0.2",
@@ -149,6 +151,7 @@
151
"web-ext": "^3.0.0",
152
"webpack": "^4.26.0",
153
"webpack-cli": "^3.1.2",
152
- "webpack-dev-server": "^3.3.1"
154
+ "webpack-dev-server": "^3.3.1",
155
+ "yargs": "^13.2.4"
156
}
157
}
shells/browser/chrome/build.js
+21
@@ -1,11 +1,32 @@
1
#!/usr/bin/env node
2
3
const chalk = require('chalk');
4
+const { execSync } = require('child_process');
5
+const { existsSync } = require('fs');
6
+const { join, relative } = require('path');
7
+const { argv } = require('yargs');
8
const build = require('../shared/build');
9
10
const main = async () => {
11
+ const { crx, keyPath } = argv;
12
+
13
+ if (crx) {
14
+ if (!keyPath || !existsSync(keyPath)) {
15
+ console.error('Must specify a key file (.pem) to build CRX');
16
+ process.exit(1);
17
+ }
18
+ }
19
+
20
await build('chrome');
21
22
+ if (crx) {
23
+ const cwd = join(__dirname, 'build');
24
+ const relativeKeyPath = join(relative(cwd, process.cwd()), keyPath);
25
+ execSync(`crx pack ./unpacked -o ReactDevTools.crx -p ${relativeKeyPath}`, {
26
+ cwd,
27
+ });
28
+ }
29
+
30
console.log(chalk.green('\nThe Chrome extension has been built!'));
31
console.log(chalk.green('You can test this build by running:'));
32
console.log(chalk.gray('\n# From the react-devtools root directory:'));
shells/browser/chrome/manifest.json
+1
-1
@@ -2,7 +2,7 @@
2
"manifest_version": 2,
3
"name": "React Developer Tools",
4
"description": "Adds React debugging tools to the Chrome Developer Tools.",
5
- "version": "4.0.0",
5
+ "version": "4.0.0.0",
6
"version_name": "4.0.0",
7
8
"minimum_chrome_version": "49",
yarn.lock
+89
-4
@@ -1842,7 +1842,7 @@ asn1.js@^4.0.0:
1842
inherits "^2.0.1"
1843
minimalistic-assert "^1.0.0"
1844
1845
-asn1@~0.2.3:
1845
+asn1@^0.2.4, asn1@~0.2.3:
1846
version "0.2.4"
1847
resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
1848
integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==
@@ -3119,6 +3119,15 @@ cliui@^4.0.0:
3119
strip-ansi "^4.0.0"
3120
wrap-ansi "^2.0.0"
3121
3122
+cliui@^5.0.0:
3123
+ version "5.0.0"
3124
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
3125
+ integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==
3126
+ dependencies:
3127
+ string-width "^3.1.0"
3128
+ strip-ansi "^5.2.0"
3129
+ wrap-ansi "^5.1.0"
3130
+
3131
clone-stats@^0.0.1:
3132
version "0.0.1"
3133
resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1"
@@ -3210,7 +3219,7 @@ commander@^2.11.0, commander@^2.14.1, commander@^2.9.0:
3219
resolved "https://registry.yarnpkg.com/commander/-/commander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a"
3220
integrity sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==
3221
3213
-commander@^2.3.0, commander@^2.6.0:
3222
+commander@^2.20.0, commander@^2.3.0, commander@^2.6.0:
3223
version "2.20.0"
3224
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422"
3225
integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==
@@ -3708,6 +3717,16 @@ crx-parser@0.1.2:
3717
resolved "https://registry.yarnpkg.com/crx-parser/-/crx-parser-0.1.2.tgz#7eeeed9eddc95e22c189382e34624044a89a5a6d"
3718
integrity sha1-fu7tnt3JXiLBiTguNGJARKiaWm0=
3719
3720
+crx@^5.0.0:
3721
+ version "5.0.0"
3722
+ resolved "https://registry.yarnpkg.com/crx/-/crx-5.0.0.tgz#da5edd267bc273f6af4ec51bb24c99c3275cb60c"
3723
+ integrity sha512-xm+94OuKy3KWV46gzsZueYgCnawx8iHFL7Xudd/LLLZKgxIYv6OHYFrLmX7B0FvPLO2/m1sOgGLt7z+MXz+/ow==
3724
+ dependencies:
3725
+ archiver "^3.0.0"
3726
+ commander "^2.20.0"
3727
+ node-rsa "^1.0.5"
3728
+ pbf "^3.2.0"
3729
+
3730
cryptiles@3.x.x:
3731
version "3.1.2"
3732
resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-3.1.2.tgz#a89fbb220f5ce25ec56e8c4aa8a4fd7b5b0d29fe"
@@ -6275,6 +6294,11 @@ icss-utils@^2.1.0:
6294
dependencies:
6295
postcss "^6.0.1"
6296
6297
+ieee754@^1.1.12:
6298
+ version "1.1.13"
6299
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
6300
+ integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
6301
+
6302
ieee754@^1.1.4:
6303
version "1.1.12"
6304
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.12.tgz#50bf24e5b9c8bb98af4964c941cdb0918da7b60b"
@@ -8710,6 +8734,13 @@ node-releases@^1.1.8:
8734
dependencies:
8735
semver "^5.3.0"
8736
8737
+node-rsa@^1.0.5:
8738
+ version "1.0.5"
8739
+ resolved "https://registry.yarnpkg.com/node-rsa/-/node-rsa-1.0.5.tgz#854dc1b275729d69bc25883f83ca80705db9262e"
8740
+ integrity sha512-9o51yfV167CtQANnuAf+5owNs7aIMsAKVLhNaKuRxihsUUnfoBMN5OTVOK/2mHSOWaWq9zZBiRM3bHORbTZqrg==
8741
+ dependencies:
8742
+ asn1 "^0.2.4"
8743
+
8744
node-version@^1.0.0:
8745
version "1.0.0"
8746
resolved "https://registry.yarnpkg.com/node-version/-/node-version-1.0.0.tgz#1b9b9584a9a7f7a6123f215cd14a652bf21ab19e"
@@ -9288,6 +9319,14 @@ path-type@^3.0.0:
9319
dependencies:
9320
pify "^3.0.0"
9321
9322
+pbf@^3.2.0:
9323
+ version "3.2.0"
9324
+ resolved "https://registry.yarnpkg.com/pbf/-/pbf-3.2.0.tgz#e76f9f5114e395c25077ad6fe463b3507d6877fc"
9325
+ integrity sha512-98Eh7rsJNJF/Im6XYMLaOW3cLnNyedlOd6hu3iWMD5I7FZGgpw8yN3vQBrmLbLodu7G784Irb9Qsv2yFrxSAGw==
9326
+ dependencies:
9327
+ ieee754 "^1.1.12"
9328
+ resolve-protobuf-schema "^2.1.0"
9329
+
9330
pbkdf2-compat@2.0.1:
9331
version "2.0.1"
9332
resolved "https://registry.yarnpkg.com/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz#b6e0c8fa99494d94e0511575802a59a5c142f288"
@@ -9595,6 +9634,11 @@ prop-types@^15.5.10, prop-types@^15.6.2, prop-types@^15.7.2:
9634
object-assign "^4.1.1"
9635
react-is "^16.8.1"
9636
9637
+protocol-buffers-schema@^3.3.1:
9638
+ version "3.3.2"
9639
+ resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.3.2.tgz#00434f608b4e8df54c59e070efeefc37fb4bb859"
9640
+ integrity sha512-Xdayp8sB/mU+sUV4G7ws8xtYMGdQnxbeIfLjyO9TZZRJdztBGhlmbI5x1qcY4TG5hBkIKGnc28i7nXxaugu88w==
9641
+
9642
proxy-addr@~2.0.4:
9643
version "2.0.5"
9644
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34"
@@ -10340,6 +10384,13 @@ resolve-from@^4.0.0:
10384
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
10385
integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
10386
10387
+resolve-protobuf-schema@^2.1.0:
10388
+ version "2.1.0"
10389
+ resolved "https://registry.yarnpkg.com/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz#9ca9a9e69cf192bbdaf1006ec1973948aa4a3758"
10390
+ integrity sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==
10391
+ dependencies:
10392
+ protocol-buffers-schema "^3.3.1"
10393
+
10394
resolve-url@^0.2.1:
10395
version "0.2.1"
10396
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
@@ -11194,7 +11245,7 @@ string-width@^1.0.1, string-width@^1.0.2:
11245
is-fullwidth-code-point "^2.0.0"
11246
strip-ansi "^4.0.0"
11247
11197
-string-width@^3.0.0:
11248
+string-width@^3.0.0, string-width@^3.1.0:
11249
version "3.1.0"
11250
resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961"
11251
integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
@@ -11249,7 +11300,7 @@ strip-ansi@^4.0.0:
11300
dependencies:
11301
ansi-regex "^3.0.0"
11302
11252
-strip-ansi@^5.0.0, strip-ansi@^5.1.0:
11303
+strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0:
11304
version "5.2.0"
11305
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae"
11306
integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
@@ -12358,6 +12409,15 @@ wrap-ansi@^3.0.1:
12409
string-width "^2.1.1"
12410
strip-ansi "^4.0.0"
12411
12412
+wrap-ansi@^5.1.0:
12413
+ version "5.1.0"
12414
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09"
12415
+ integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==
12416
+ dependencies:
12417
+ ansi-styles "^3.2.0"
12418
+ string-width "^3.0.0"
12419
+ strip-ansi "^5.0.0"
12420
+
12421
wrappy@1:
12422
version "1.0.2"
12423
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
@@ -12488,6 +12548,14 @@ yargs-parser@^13.0.0:
12548
camelcase "^5.0.0"
12549
decamelize "^1.2.0"
12550
12551
+yargs-parser@^13.1.0:
12552
+ version "13.1.1"
12553
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0"
12554
+ integrity sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==
12555
+ dependencies:
12556
+ camelcase "^5.0.0"
12557
+ decamelize "^1.2.0"
12558
+
12559
yargs-parser@^4.2.0:
12560
version "4.2.1"
12561
resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c"
@@ -12556,6 +12624,23 @@ yargs@6.6.0:
12624
y18n "^3.2.1"
12625
yargs-parser "^4.2.0"
12626
12627
+yargs@^13.2.4:
12628
+ version "13.2.4"
12629
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83"
12630
+ integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==
12631
+ dependencies:
12632
+ cliui "^5.0.0"
12633
+ find-up "^3.0.0"
12634
+ get-caller-file "^2.0.1"
12635
+ os-locale "^3.1.0"
12636
+ require-directory "^2.1.1"
12637
+ require-main-filename "^2.0.0"
12638
+ set-blocking "^2.0.0"
12639
+ string-width "^3.0.0"
12640
+ which-module "^2.0.0"
12641
+ y18n "^4.0.0"
12642
+ yargs-parser "^13.1.0"
12643
+
12644
yargs@^8.0.2:
12645
version "8.0.2"
12646
resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360"