Introduction
webext-buildtools builder which allows you to upload, publish and download crx file from Chrome Web Store.
If you need a complete solution for Web Extension build/deploy, go to
webext-buildtools-integrated-builder repo.
To read what are webext-buildtools and builders go to
webext-buildtools-builder-types repo.
Installation
npm install webext-buildtools-chrome-webstore-builder
Purpose
Builder is based on typed-chrome-webstore-api
package and allows you to upload and publish your Web Extension to Chrome Web Store and then download published crx file.
Builder doesn't allow publish new extension, only update existing (specified by extensionId
in options)
with new version.
Usage example
const ChromeWebstoreBuilder = require('webext-buildtools-chrome-webstore-builder').default;
const fs = require('fs-extra');
const options = { ... };
const logMethod = console.log;
const builder = new ChromeWebstoreBuilder(options, logMethod);
builder.setInputManifest(await fs.readJson('./ext_dir/package.json'));
builder.setInputZipBuffer(await fs.read('./packed.zip'));
builder.requireUploadedExt();
builder.requirePublishedExt();
builder.requirePublishedCrxFile();
const buildResult = await builder.build();
Options
Options object described in declarations/options.d.ts
See how to get logMethod
for pretty output.
apiAccess
To setup API access you need to specify clientId
, clientSecret
and refreshToken
in options.apiAccess
.
To find out how to obtain them you can read:
Inputs
setInputManifest(...)
. Object with parsed extension's package.json
. Required to produce update.xml
filesetInputZipBuffer(...)
. Buffer with zipped extension dir. Required to produce packed crx
file
You can use webext-buildtools-dir-reader-mw
to generate needed inputs from extension directory.
Outputs
uploaded ext
Require to upload extension to Chrome Web Store (first step before publish)
Required options: extensionId
, apiAccess
Require methods: requireUploadedExt()
Assets:
const uploadInfo = buildResult.getAssets().uploadedExt.getValue()
upload info definition
published ext
Require to publish extension to Chrome Web Store (second step).
Normally is used with requireUploadedExt()
, but can be used to publish already uploaded version
Required options: extensionId
, apiAccess
Require methods: requirePublishedExt()
Assets:
const publishInfo = buildResult.getAssets().publishedExt.getValue()
publish info definition
published crx file
Download published crx file from Chrome Web Store (undocumented feature). Normally is
used together with requireUploadedExt()
and requirePublishedExt()
, but can be used
separately to download crx file for extensionId
specified in options.
Required options: downloadCrx.outCrxFilePath
(for not temporary file), extensionId
Require methods: requirePublishedCrxFile()
, requirePublishedCrxBuffer()
Assets:
const crxFilePath = buildResult.getAssets().publishedCrxFile.getValue()
const crxBuffer = buildResult.getAssets().publishedCrxBuffer.getValue()
Errors
builder.build()
call can be rejected with general Error
or the following specific errors if
extension upload was required:
InvalidManifestVersionError
if manifest file has invalid extension version.NewerVersionAlreadyUploadedError
if currently uploaded version is greater than the version in
the extension manifest.SameVersionAlreadyUploadedError
if currently uploaded version equals to the version in
the extension manifest.UploadInReviewError
if upload failed due to item currently in the review state.