feat: 新增包文件
This commit is contained in:
143
packages/electron-chrome-web-store/README.md
Normal file
143
packages/electron-chrome-web-store/README.md
Normal file
@@ -0,0 +1,143 @@
|
||||
# electron-chrome-web-store
|
||||
|
||||
Install and update Chrome extensions from the Chrome Web Store for Electron.
|
||||
|
||||
## Usage
|
||||
|
||||
```
|
||||
npm install electron-chrome-web-store
|
||||
```
|
||||
|
||||
> [!TIP]
|
||||
> To enable full support for Chrome extensions in Electron, install [electron-chrome-extensions](https://www.npmjs.com/package/electron-chrome-extensions).
|
||||
|
||||
### Enable downloading extensions from the Chrome Web Store
|
||||
|
||||
```js
|
||||
const { app, BrowserWindow, session } = require('electron')
|
||||
const { installChromeWebStore } = require('electron-chrome-web-store')
|
||||
|
||||
app.whenReady().then(async () => {
|
||||
const browserSession = session.defaultSession
|
||||
const browserWindow = new BrowserWindow({
|
||||
webPreferences: {
|
||||
session: browserSession,
|
||||
},
|
||||
})
|
||||
|
||||
// Install Chrome web store and wait for extensions to load
|
||||
await installChromeWebStore({ session: browserSession })
|
||||
|
||||
browserWindow.loadURL('https://chromewebstore.google.com/')
|
||||
})
|
||||
```
|
||||
|
||||
### Install and update extensions programmatically
|
||||
|
||||
```js
|
||||
const { app, session } = require('electron')
|
||||
const { installExtension, updateExtensions } = require('electron-chrome-web-store')
|
||||
|
||||
app.whenReady().then(async () => {
|
||||
// Install Dark Reader
|
||||
await installExtension('eimadpbcbfnmbkopoojfekhnkhdbieeh')
|
||||
|
||||
// Install React Developer Tools with file:// access
|
||||
await installExtension('fmkadmapgofadopljbjfkapdkoienihi', {
|
||||
loadExtensionOptions: { allowFileAccess: true },
|
||||
})
|
||||
|
||||
// Install uBlock Origin Lite to custom session
|
||||
await installExtension('ddkjiahejlhfcafbddmgiahcphecmpfh', {
|
||||
session: session.fromPartition('persist:browser'),
|
||||
})
|
||||
|
||||
// Check and install updates for all loaded extensions
|
||||
await updateExtensions()
|
||||
})
|
||||
```
|
||||
|
||||
### Packaging the preload script
|
||||
|
||||
This module uses a [preload script](https://www.electronjs.org/docs/latest/tutorial/tutorial-preload#what-is-a-preload-script).
|
||||
When packaging your application, it's required that the preload script is included. This can be
|
||||
handled in two ways:
|
||||
|
||||
1. Include `node_modules` in your packaged app. This allows `electron-chrome-web-store/preload` to
|
||||
be resolved.
|
||||
2. In the case of using JavaScript bundlers, you may need to copy the preload script next to your
|
||||
app's entry point script. You can try using
|
||||
[copy-webpack-plugin](https://github.com/webpack-contrib/copy-webpack-plugin),
|
||||
[vite-plugin-static-copy](https://github.com/sapphi-red/vite-plugin-static-copy),
|
||||
or [rollup-plugin-copy](https://github.com/vladshcherbin/rollup-plugin-copy) depending on your app's
|
||||
configuration.
|
||||
|
||||
Here's an example for webpack configurations:
|
||||
|
||||
```js
|
||||
module.exports = {
|
||||
entry: './index.js',
|
||||
plugins: [
|
||||
new CopyWebpackPlugin({
|
||||
patterns: [require.resolve('electron-chrome-web-store/preload')],
|
||||
}),
|
||||
],
|
||||
}
|
||||
```
|
||||
|
||||
## API
|
||||
|
||||
### `installChromeWebStore`
|
||||
|
||||
Installs Chrome Web Store support in the specified session.
|
||||
|
||||
- `options`
|
||||
- `session`: The Electron session to enable the Chrome Web Store in. Defaults to `session.defaultSession`.
|
||||
- `extensionsPath`: The path to the extensions directory. Defaults to 'Extensions/' in the app's userData path.
|
||||
- `autoUpdate`: Whether to auto-update web store extensions at startup and once every 5 hours. Defaults to true.
|
||||
- `loadExtensions`: A boolean indicating whether to load extensions installed by Chrome Web Store. Defaults to true.
|
||||
- `allowUnpackedExtensions`: A boolean indicating whether to allow loading unpacked extensions. Only loads if `loadExtensions` is also enabled. Defaults to false.
|
||||
- `allowlist`: An array of allowed extension IDs to install.
|
||||
- `denylist`: An array of denied extension IDs to install.
|
||||
- `beforeInstall`: A function which receives install details and returns a promise. Allows for prompting prior to install.
|
||||
|
||||
### `installExtension`
|
||||
|
||||
Installs Chrome extension from the Chrome Web Store.
|
||||
|
||||
- `extensionId`: The Chrome Web Store extension ID to install.
|
||||
- `options`
|
||||
- `session`: The Electron session to load extensions in. Defaults to `session.defaultSession`.
|
||||
- `extensionsPath`: The path to the extensions directory. Defaults to 'Extensions/' in the app's userData path.
|
||||
- `loadExtensionOptions`: Extension options passed into `session.extensions.loadExtension`.
|
||||
|
||||
### `uninstallExtension`
|
||||
|
||||
Uninstalls Chrome Web Store extension.
|
||||
|
||||
- `extensionId`: The Chrome Web Store extension ID to uninstall.
|
||||
- `options`
|
||||
- `session`: The Electron session where extensions are loaded. Defaults to `session.defaultSession`.
|
||||
- `extensionsPath`: The path to the extensions directory. Defaults to 'Extensions/' in the app's userData path.
|
||||
|
||||
### `updateExtensions`
|
||||
|
||||
Checks loaded extensions for updates and installs any if available.
|
||||
|
||||
- `session`: The Electron session to load extensions in. Defaults to `session.defaultSession`.
|
||||
|
||||
### `loadAllExtensions`
|
||||
|
||||
Loads all extensions from the specified directory.
|
||||
|
||||
- `session`: The Electron session to load extensions in.
|
||||
- `extensionsPath`: The path to the directory containing the extensions.
|
||||
- `options`: An object with the following property:
|
||||
- `allowUnpacked`: A boolean indicating whether to allow loading unpacked extensions. Defaults to false.
|
||||
|
||||
> [!NOTE]
|
||||
> The `installChromeWebStore` API will automatically load web store extensions by default.
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
Reference in New Issue
Block a user