Add create command to extension-sdk CLI (#6590)

* Add create command to extension-sdk CLI

* Extract extension package.json key name to shared

* Check package.json before building extensions

* Add source field to package.json

* Pin extension-sdk verson in scaffolded package

* Change options color to magenta
This commit is contained in:
Nicola Krumschmidt
2021-07-07 14:34:51 +02:00
committed by GitHub
parent e7a737bba8
commit ff393eab3b
19 changed files with 277 additions and 8 deletions

View File

@@ -7,3 +7,5 @@ export const API_EXTENSION_TYPES: ApiExtensionType[] = ['endpoint', 'hook'];
export const EXTENSION_TYPES: ExtensionType[] = [...APP_EXTENSION_TYPES, ...API_EXTENSION_TYPES];
export const EXTENSION_NAME_REGEX = /^(?:(?:@[^/]+\/)?directus-extension-|@directus\/extension-).+$/;
export const EXTENSION_PKG_KEY = 'directus:extension';

View File

@@ -3,7 +3,7 @@ import fse from 'fs-extra';
import { Extension } from '../types';
import { resolvePackage } from './resolve-package';
import { listFolders } from './list-folders';
import { EXTENSION_NAME_REGEX, EXTENSION_TYPES } from '../constants';
import { EXTENSION_NAME_REGEX, EXTENSION_PKG_KEY, EXTENSION_TYPES } from '../constants';
import { pluralize } from './pluralize';
export async function getPackageExtensions(root: string): Promise<Extension[]> {
@@ -19,7 +19,7 @@ export async function getPackageExtensions(root: string): Promise<Extension[]> {
const extensionPath = resolvePackage(extensionName, root);
const extensionPkg = await fse.readJSON(path.join(extensionPath, 'package.json'));
if (extensionPkg['directus:extension'].type === 'pack') {
if (extensionPkg[EXTENSION_PKG_KEY].type === 'pack') {
const extensionChildren = Object.keys(extensionPkg.dependencies).filter((dep) =>
EXTENSION_NAME_REGEX.test(dep)
);
@@ -28,8 +28,8 @@ export async function getPackageExtensions(root: string): Promise<Extension[]> {
path: extensionPath,
name: extensionName,
version: extensionPkg.version,
type: extensionPkg['directus:extension'].type,
host: extensionPkg['directus:extension'].host,
type: extensionPkg[EXTENSION_PKG_KEY].type,
host: extensionPkg[EXTENSION_PKG_KEY].host,
children: extensionChildren,
local: false,
root: root === undefined,
@@ -42,9 +42,9 @@ export async function getPackageExtensions(root: string): Promise<Extension[]> {
path: extensionPath,
name: extensionName,
version: extensionPkg.version,
type: extensionPkg['directus:extension'].type,
entrypoint: extensionPkg['directus:extension'].path,
host: extensionPkg['directus:extension'].host,
type: extensionPkg[EXTENSION_PKG_KEY].type,
entrypoint: extensionPkg[EXTENSION_PKG_KEY].path,
host: extensionPkg[EXTENSION_PKG_KEY].host,
local: false,
root: root === undefined,
});