From 4f3beb271e9d0552d77201eefc697ac4342f2631 Mon Sep 17 00:00:00 2001 From: Andras Date: Sat, 19 Oct 2019 09:04:38 +0200 Subject: [PATCH 01/27] Add --webextension option to command line The --webextension option will automatically add webextension-polyfill to your extension by default. --- index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/index.js b/index.js index d349726..54b5a9b 100755 --- a/index.js +++ b/index.js @@ -28,6 +28,7 @@ const program = new commander.Command(packageFile.name) 'override default page like New Tab, Bookmarks, or History page' ) .option('--devtools', 'add features to Chrome Developer Tools') + .option('--webextension', `create a cross-rowser compatible WebExtension with ${chalk.blue(webextension-polyfill)}`) .on('--help', () => { console.log(` Only ${chalk.green('')} is required.`); }) From 43c7e4c63ac046a1169b32c7d8df96c143391b2c Mon Sep 17 00:00:00 2001 From: Andras Date: Mon, 21 Oct 2019 18:00:37 +0200 Subject: [PATCH 02/27] Add webextension-polyfill to package.json --- package-lock.json | 8 +++++++- package.json | 3 ++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 10a84a8..32b9e70 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "chrome-extension-cli", - "version": "0.1.0", + "version": "0.2.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -138,6 +138,12 @@ "builtins": "^1.0.3" } }, + "webextension-polyfill": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/webextension-polyfill/-/webextension-polyfill-0.5.0.tgz", + "integrity": "sha512-aFrl38x43t1bTboX/paCT8I97+idzX/TY0+fuM52hrIkCpYfROEF9kSn0BXuEIi3J9LTYt2ZZKkhx9NB1qF3nA==", + "dev": true + }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", diff --git a/package.json b/package.json index cea496e..89b7618 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,7 @@ "validate-npm-package-name": "^3.0.0" }, "devDependencies": { - "prettier": "^1.18.2" + "prettier": "^1.18.2", + "webextension-polyfill": "^0.5.0" } } From 069d6a01ee735883fa89c4c771d2780b47c27755 Mon Sep 17 00:00:00 2001 From: Andras Date: Mon, 21 Oct 2019 18:18:32 +0200 Subject: [PATCH 03/27] Modify webpack.common conifg to automatically include browser-polyfill.js in builds --- config/webpack.common.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/config/webpack.common.js b/config/webpack.common.js index 52b29a5..239bb21 100644 --- a/config/webpack.common.js +++ b/config/webpack.common.js @@ -48,6 +48,12 @@ const common = { plugins: [ // Print file sizes new SizePlugin(), + // Copy browser-polyfill.js for cross browser compability + new CopyWebpackPlugin([ + { + from: 'node_modules/webextension-polyfill/dist/browser-polyfill.js' + } + ]), // Copy static assets from `public` folder to `build` folder new CopyWebpackPlugin([ { From 16fe0cfdafc2529e9c58c41cd420615942e7129a Mon Sep 17 00:00:00 2001 From: Andras Date: Mon, 21 Oct 2019 18:19:29 +0200 Subject: [PATCH 04/27] Modify generated Manifest file to include browser-polyfill.js --- index.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/index.js b/index.js index 54b5a9b..54598ae 100755 --- a/index.js +++ b/index.js @@ -28,7 +28,7 @@ const program = new commander.Command(packageFile.name) 'override default page like New Tab, Bookmarks, or History page' ) .option('--devtools', 'add features to Chrome Developer Tools') - .option('--webextension', `create a cross-rowser compatible WebExtension with ${chalk.blue(webextension-polyfill)}`) + .option('--webextension', `create a cross-rowser compatible WebExtension with ${chalk.blue('webextension-polyfill')}`) .on('--help', () => { console.log(` Only ${chalk.green('')} is required.`); }) @@ -149,7 +149,8 @@ function createExtension(name, { overridePage, devtools }) { 'size-plugin', 'mini-css-extract-plugin', 'css-loader', - 'file-loader' + 'file-loader', + 'webextension-polyfill' ); console.log('Installing packages. This might take a couple of minutes.'); @@ -236,7 +237,7 @@ function createExtension(name, { overridePage, devtools }) { { matches: [''], run_at: 'document_idle', - js: ['contentScript.js'], + js: ['browser-polyfill.js', 'contentScript.js'], }, ], }; From c212731ec8ed828be912bbb4fb238a067bcae991 Mon Sep 17 00:00:00 2001 From: Andras Date: Wed, 23 Oct 2019 17:01:13 +0200 Subject: [PATCH 05/27] Modify --webextension option to --no-cross-browser --- index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index 54598ae..46ac934 100755 --- a/index.js +++ b/index.js @@ -28,7 +28,7 @@ const program = new commander.Command(packageFile.name) 'override default page like New Tab, Bookmarks, or History page' ) .option('--devtools', 'add features to Chrome Developer Tools') - .option('--webextension', `create a cross-rowser compatible WebExtension with ${chalk.blue('webextension-polyfill')}`) + .option('--no-cross-browser', `the generated project will not be cross-browser compatible`) .on('--help', () => { console.log(` Only ${chalk.green('')} is required.`); }) From 157171cfd112f8f41edc4f34ca7df7cd85d36f26 Mon Sep 17 00:00:00 2001 From: Andras Date: Wed, 23 Oct 2019 17:09:34 +0200 Subject: [PATCH 06/27] Modiy static html pages to include browser-polyfill.js --- templates/devtools/public/devtools.html | 1 + templates/devtools/public/panel.html | 1 + templates/override-page/public/index.html | 1 + templates/popup/public/popup.html | 1 + 4 files changed, 4 insertions(+) diff --git a/templates/devtools/public/devtools.html b/templates/devtools/public/devtools.html index 02c9464..24bbeaa 100644 --- a/templates/devtools/public/devtools.html +++ b/templates/devtools/public/devtools.html @@ -5,6 +5,7 @@ Chrome DevTools +