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()); + }); +};