JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 7
  • Score
    100M100P100Q57854F
  • License MIT

webext-buildtools builder for deploying to Chrome Webstore. Based on chrome-webstore-upload

Package Exports

  • webext-buildtools-chrome-webstore-builder

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (webext-buildtools-chrome-webstore-builder) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Build Status

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 = { ... }; // see description below
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

  1. setInputManifest(...). Object with parsed extension's package.json. Required to produce update.xml file
  2. setInputZipBuffer(...). 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()