Command-Line Interface for Firebase that provides deployment, testing, and management functionality for Firebase projects.
—
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Pending
The risk profile of this skill
Firebase Extensions marketplace and management for installing, configuring, and managing pre-built solutions that extend Firebase functionality.
Installs a Firebase Extension from the marketplace or custom source.
/**
* Install Firebase Extension
* @param extensionName - Extension name or source
* @param options - Installation options
* @returns Promise resolving when extension is installed
*/
function install(
extensionName: string,
options?: Options & {
/** Instance ID for the extension */
instanceId?: string;
/** Extension parameters */
params?: Record<string, any>;
/** Parameters file path */
paramsFile?: string;
/** Auto-approve installation */
force?: boolean;
}
): Promise<{
name: string;
instanceId: string;
config: {
name: string;
createTime: string;
updateTime: string;
state: string;
};
}>;Usage Examples:
const client = require("firebase-tools");
// Install extension from marketplace
await client.ext.install("firebase/storage-resize-images", {
project: "my-project",
instanceId: "resize-images-prod"
});
// Install with custom parameters
await client.ext.install("firebase/firestore-send-email", {
project: "my-project",
instanceId: "send-email",
params: {
SMTP_CONNECTION_URI: "smtps://username:password@smtp.gmail.com:465",
DEFAULT_FROM: "noreply@myapp.com",
DEFAULT_REPLY_TO: "support@myapp.com"
}
});
// Install with parameters from file
await client.ext.install("firebase/firestore-translate-text", {
project: "my-project",
paramsFile: "./translate-config.env",
force: true
});Lists all installed extensions in the project.
/**
* List installed Firebase Extensions
* @param options - Command options
* @returns Promise resolving to array of extension information
*/
function list(options?: Options): Promise<Array<{
name: string;
instanceId: string;
createTime: string;
updateTime: string;
state: "DEPLOYING" | "ACTIVE" | "PAUSED" | "ERRORED";
config: {
name: string;
displayName: string;
description: string;
version: string;
};
serviceAccountEmail: string;
errorStatus?: string;
}>>;Usage Examples:
// List all installed extensions
const extensions = await client.ext.list({
project: "my-project"
});
console.log("Installed extensions:");
extensions.forEach(ext => {
console.log(`- ${ext.config.displayName} (${ext.instanceId}): ${ext.state}`);
});Gets detailed information about an extension from the marketplace.
/**
* Get extension information from marketplace
* @param extensionName - Extension name to get info for
* @param options - Command options
* @returns Promise resolving when information is displayed
*/
function info(
extensionName: string,
options?: Options
): Promise<void>;Usage Examples:
// Get extension info
await client.ext.info("firebase/storage-resize-images");
// Get info for specific version
await client.ext.info("firebase/firestore-send-email@0.1.7");Reconfigures an installed extension's parameters.
/**
* Configure installed extension
* @param options - Configuration options
* @returns Promise resolving when extension is reconfigured
*/
function configure(options: Options & {
/** Instance ID of extension to configure */
instanceId: string;
/** New parameters */
params?: Record<string, any>;
/** Parameters file path */
paramsFile?: string;
}): Promise<void>;Usage Examples:
// Reconfigure extension parameters
await client.ext.configure({
project: "my-project",
instanceId: "resize-images-prod",
params: {
IMG_SIZES: "200x200,400x400,800x800",
IMG_TYPE: "webp"
}
});Updates an installed extension to a newer version.
/**
* Update installed extension
* @param options - Update options
* @returns Promise resolving when extension is updated
*/
function update(options: Options & {
/** Instance ID of extension to update */
instanceId: string;
/** Specific version to update to */
version?: string;
/** Auto-approve update */
force?: boolean;
}): Promise<void>;Usage Examples:
// Update to latest version
await client.ext.update({
project: "my-project",
instanceId: "send-email"
});
// Update to specific version
await client.ext.update({
project: "my-project",
instanceId: "resize-images-prod",
version: "0.2.1",
force: true
});Removes an installed extension from the project.
/**
* Uninstall Firebase Extension
* @param options - Uninstall options
* @returns Promise resolving when extension is uninstalled
*/
function uninstall(options: Options & {
/** Instance ID of extension to uninstall */
instanceId: string;
/** Force uninstall without confirmation */
force?: boolean;
}): Promise<void>;Usage Examples:
// Uninstall extension
await client.ext.uninstall({
project: "my-project",
instanceId: "old-extension",
force: true
});Exports extension configurations for backup or migration.
/**
* Export extension configurations
* @param options - Export options
* @returns Promise resolving when configuration is exported
*/
function exportConfig(options?: Options & {
/** Output file path */
output?: string;
}): Promise<void>;Usage Examples:
// Export all extension configs
await client.ext.export({
project: "my-project",
output: "./extensions-config.json"
});Installs the Firebase Extensions SDK for custom extension development.
/**
* Install Firebase Extensions SDK
* @param options - SDK installation options
* @returns Promise resolving when SDK is installed
*/
function sdkInstall(options?: Options): Promise<void>;Usage Examples:
// Install Extensions SDK
await client.ext.sdk.install();Initializes a new extension development project.
/**
* Initialize extension development project
* @param options - Initialization options
* @returns Promise resolving when project is initialized
*/
function devInit(options?: Options & {
/** Extension template to use */
template?: string;
}): Promise<void>;Lists extensions published by the authenticated developer.
/**
* List developer-published extensions
* @param options - Command options
* @returns Promise resolving to array of extension information
*/
function devList(options?: Options): Promise<Array<{
name: string;
displayName: string;
description: string;
version: string;
state: string;
createTime: string;
updateTime: string;
}>>;Registers a new extension with Firebase Extensions marketplace.
/**
* Register extension with marketplace
* @param options - Registration options
* @returns Promise resolving when extension is registered
*/
function devRegister(options: Options & {
/** Extension source directory */
source: string;
}): Promise<void>;Uploads a new version of an extension.
/**
* Upload extension version
* @param options - Upload options
* @returns Promise resolving when extension is uploaded
*/
function devUpload(options: Options & {
/** Extension source directory */
source: string;
/** Version number */
version?: string;
}): Promise<void>;Marks an extension version as deprecated.
/**
* Deprecate extension version
* @param extensionName - Extension name to deprecate
* @param options - Deprecation options
* @returns Promise resolving when extension is deprecated
*/
function devDeprecate(
extensionName: string,
options?: Options & {
/** Specific version to deprecate */
version?: string;
/** Deprecation message */
message?: string;
}
): Promise<void>;Removes deprecation status from an extension version.
/**
* Undeprecate extension version
* @param extensionName - Extension name to undeprecate
* @param options - Undeprecation options
* @returns Promise resolving when extension is undeprecated
*/
function devUndeprecate(
extensionName: string,
options?: Options & {
/** Specific version to undeprecate */
version?: string;
}
): Promise<void>;Retrieves usage statistics for a published extension.
/**
* Get extension usage statistics
* @param extensionName - Extension name to get usage for
* @param options - Usage options
* @returns Promise resolving when usage is displayed
*/
function devUsage(
extensionName: string,
options?: Options
): Promise<void>;Development Examples:
// Initialize extension project
await client.ext.dev.init({
template: "functions"
});
// List your published extensions
const myExtensions = await client.ext.dev.list();
// Upload new version
await client.ext.dev.upload({
source: "./my-extension",
version: "1.2.0"
});
// Deprecate old version
await client.ext.dev.deprecate("my-org/my-extension", {
version: "1.0.0",
message: "Please upgrade to version 1.2.0"
});
// Get usage stats
await client.ext.dev.usage("my-org/my-extension");Extensions published by third-party developers covering various use cases like payments, analytics, content management, and integrations.