Package Exports
- chrome-webstore-upload
Readme
chrome-webstore-upload
A small node.js module to upload/publish extensions to the Chrome Web Store.
If you're looking to upload/publish from the CLI, then use chrome-webstore-upload-cli.
Install
npm install --save-dev chrome-webstore-uploadSetup
You will need a Google API clientId, clientSecret and refreshToken. Use the guide.
Usage
All methods return a promise.
Create a new client
import chromeWebstoreUpload from 'chrome-webstore-upload';
const store = chromeWebstoreUpload({
extensionId: 'ecnglinljpjkbgmdpeiglonddahpbkeb',
clientId: 'xxxxxxxxxx',
clientSecret: 'xxxxxxxxxx',
refreshToken: 'xxxxxxxxxx',
});Upload to existing extension
You can upload a zip file, crx file, or a directory. If you provide a directory, it will be automatically zipped. Crx files are only supported as path, not as stream.
import fs from 'fs';
// Upload a zip file
const myZipFile = fs.createReadStream('./mypackage.zip');
const token = 'xxxx'; // optional. One will be fetched if not provided
const maxAwaitInProgressResponseSeconds = 60; // optional. If the API response is IN_PROGRESS, this method will wait until it becomes successful, or until the specified timeout
const response = await store.uploadExisting(myZipFile, token, maxAwaitInProgressResponseSeconds);
// response is a Resource Representation
// https://developer.chrome.com/webstore/webstore_api/items#resource// Upload a directory (it will be zipped automatically)
const response = await store.uploadExisting('./path/to/extension-directory', token, maxAwaitInProgressResponseSeconds);
// The directory must contain a manifest.json file// Upload a .zip or .crx file by path
const response = await store.uploadExisting('./path/to/extension.zip', token, maxAwaitInProgressResponseSeconds);
// or
const response = await store.uploadExisting('./path/to/extension.crx', token, maxAwaitInProgressResponseSeconds);Publish extension
const target = 'default'; // optional. Can also be 'trustedTesters'
const token = 'xxxx'; // optional. One will be fetched if not provided
const deployPercentage = 25; // optional. Will default to 100%.
const response = await store.publish(target, token, deployPercentage);
// response is documented here:
// https://developer.chrome.com/webstore/webstore_api/items#publishGet a Chrome Web Store item
const projection = "DRAFT"; // optional. Can also be 'PUBLISHED' but only "DRAFT" is supported at this time.
const token = "xxxx"; // optional. One will be fetched if not provided
const response = await store.get(projection, token);
// response is documented here:
// https://developer.chrome.com/docs/webstore/webstore_api/items#getFetch token
const token = store.fetchToken();
// token is astringTips
- If you plan to upload and publish at the same time, use the
fetchTokenmethod, and pass it to bothuploadExistingandpublishas the optional second parameter. This will avoid those methods making duplicate calls for new tokens.
Related
- webext-storage-cache - Map-like promised cache storage with expiration. Chrome and Firefox
- webext-dynamic-content-scripts - Automatically registers your content_scripts on domains added via permission.request
- Awesome-WebExtensions - A curated list of awesome resources for WebExtensions development.
- More…