diff --git a/packages/cli/src/commands/plugin/assets.d.ts b/packages/cli/src/commands/plugin/assets.d.ts
new file mode 100644
index 0000000000..34ba07f75c
--- /dev/null
+++ b/packages/cli/src/commands/plugin/assets.d.ts
@@ -0,0 +1,80 @@
+///
+///
+///
+
+declare namespace NodeJS {
+ interface ProcessEnv {
+ readonly NODE_ENV: 'development' | 'production' | 'test';
+ }
+}
+
+declare module '*.bmp' {
+ const src: string;
+ export default src;
+}
+
+declare module '*.gif' {
+ const src: string;
+ export default src;
+}
+
+declare module '*.jpg' {
+ const src: string;
+ export default src;
+}
+
+declare module '*.jpeg' {
+ const src: string;
+ export default src;
+}
+
+declare module '*.png' {
+ const src: string;
+ export default src;
+}
+
+declare module '*.webp' {
+ const src: string;
+ export default src;
+}
+
+declare module '*.svg' {
+ import * as React from 'react';
+
+ export const ReactComponent: React.FunctionComponent & { title?: string }>;
+
+ const src: string;
+ export default src;
+}
+
+declare module '*.css' {
+ const classes: { readonly [key: string]: string };
+ export default classes;
+}
+
+declare module '*.scss' {
+ const classes: { readonly [key: string]: string };
+ export default classes;
+}
+
+declare module '*.sass' {
+ const classes: { readonly [key: string]: string };
+ export default classes;
+}
+
+declare module '*.module.css' {
+ const classes: { readonly [key: string]: string };
+ export default classes;
+}
+
+declare module '*.module.scss' {
+ const classes: { readonly [key: string]: string };
+ export default classes;
+}
+
+declare module '*.module.sass' {
+ const classes: { readonly [key: string]: string };
+ export default classes;
+}
diff --git a/packages/cli/src/commands/plugin/build.ts b/packages/cli/src/commands/plugin/build.ts
index 0d45a583a3..6607b0507a 100644
--- a/packages/cli/src/commands/plugin/build.ts
+++ b/packages/cli/src/commands/plugin/build.ts
@@ -17,6 +17,9 @@
import chalk from 'chalk';
import { Command } from 'commander';
import { spawnSync } from 'child_process';
+import fs from 'fs-extra';
+import recursive from 'recursive-readdir';
+import path from 'path';
export default async (cmd: Command) => {
const args = [
@@ -33,6 +36,7 @@ export default async (cmd: Command) => {
}
try {
+ await copyStaticAssets();
const result = spawnSync('tsc', args, { stdio: 'inherit' });
if (result.error) {
throw result.error;
@@ -43,3 +47,20 @@ export default async (cmd: Command) => {
process.exit(1);
}
};
+
+const copyStaticAssets = async () => {
+ const pluginRoot = fs.realpathSync(process.cwd());
+ const source = path.resolve(pluginRoot, 'src');
+ const destination = path.resolve(pluginRoot, 'dist', 'cjs');
+ const assetFiles = await recursive(source, [
+ '**/*.tsx',
+ '**/*.ts',
+ '**/*.js',
+ ]);
+ assetFiles.forEach(file => {
+ const fileToBeCopied = file.replace(source, destination);
+ const dirForFileToBeCopied = path.dirname(fileToBeCopied);
+ fs.ensureDirSync(dirForFileToBeCopied);
+ fs.copyFileSync(file, file.replace(source, destination).toString());
+ });
+};