diff --git a/README.md b/README.md index bab0f8c..2ea1bdb 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ TODO - [ ] start:native - [x] build:web - [ ] build:native -- [ ] release:web +- [x] release:web - [ ] release:native - [ ] lint - [ ] lint:fix @@ -52,8 +52,8 @@ TODO ## Support platforms -- [ ] Web - - [ ] Basic Functions +- [x] Web + - [x] Basic Functions - [ ] Linter and Formatting - [ ] TDD Functions - [ ] Native diff --git a/package.json b/package.json index 13813f1..06a74f5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@repixelcorp/hyper-pwt", - "version": "0.0.4", + "version": "0.1.0", "description": "A faster, more modern, superior alternative for Mendix PWT.", "repository": { "type": "git", diff --git a/src/cli.ts b/src/cli.ts index 52bf8b9..7ca916e 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -11,7 +11,16 @@ program.version(packageJson.version, '-v, --version', 'display current version') program .command('build:web') .summary('build web widget') - .action(buildWebCommand); + .action(async () => { + await buildWebCommand(); + }); + +program + .command('release:web') + .summary('release web widget') + .action(async () => { + await buildWebCommand(true); + }); program .command('start:web') diff --git a/src/commands/build/web/index.ts b/src/commands/build/web/index.ts index bb6cf56..7c13170 100644 --- a/src/commands/build/web/index.ts +++ b/src/commands/build/web/index.ts @@ -12,7 +12,7 @@ import getWidgetName from '../../../utils/getWidgetName'; import getWidgetPackageJson from '../../../utils/getWidgetPackageJson'; import getMendixWidgetDirectory from '../../../utils/getMendixWidgetDirectory'; -const buildWebCommand = async () => { +const buildWebCommand = async (isProduction: boolean = false) => { try { showMessage('Remove previous builds'); @@ -40,9 +40,9 @@ const buildWebCommand = async () => { if (viteConfigIsExists) { const userConfig: UserConfig = await import(customViteConfigPath); - resultViteConfig = await getViteDefaultConfig(userConfig); + resultViteConfig = await getViteDefaultConfig(isProduction, userConfig); } else { - resultViteConfig = await getViteDefaultConfig(); + resultViteConfig = await getViteDefaultConfig(isProduction); } const widgetName = await getWidgetName(); @@ -56,8 +56,8 @@ const buildWebCommand = async () => { showMessage('Start build'); - const editorConfigViteConfig = await getEditorConfigDefaultConfig(); - const editorPreviewViteConfig = await getEditorPreviewDefaultConfig(); + const editorConfigViteConfig = await getEditorConfigDefaultConfig(isProduction); + const editorPreviewViteConfig = await getEditorPreviewDefaultConfig(isProduction); const viteBuildConfigs: InlineConfig[] = [ { ...resultViteConfig, diff --git a/src/configurations/vite/index.ts b/src/configurations/vite/index.ts index bd1e10f..4792c8a 100644 --- a/src/configurations/vite/index.ts +++ b/src/configurations/vite/index.ts @@ -6,15 +6,16 @@ import getWidgetName from "../../utils/getWidgetName"; import { PROJECT_DIRECTORY, WEB_OUTPUT_DIRECTORY } from "../../constants"; import getViteOutputDirectory from "../../utils/getViteOutputDirectory"; -export const getEditorConfigDefaultConfig = async (): Promise => { +export const getEditorConfigDefaultConfig = async (isProduction: boolean): Promise => { const widgetName = await getWidgetName(); return { plugins: [], build: { outDir: WEB_OUTPUT_DIRECTORY, - minify: 'esbuild', + minify: isProduction ? 'esbuild' : false, emptyOutDir: false, + sourcemap: isProduction ? false : true, lib: { entry: path.join(PROJECT_DIRECTORY, `/src/${widgetName}.editorConfig.ts`), name: `${widgetName}.editorConfig`, @@ -27,7 +28,7 @@ export const getEditorConfigDefaultConfig = async (): Promise => { }; }; -export const getEditorPreviewDefaultConfig = async (): Promise => { +export const getEditorPreviewDefaultConfig = async (isProduction: boolean): Promise => { const widgetName = await getWidgetName(); return { @@ -38,8 +39,9 @@ export const getEditorPreviewDefaultConfig = async (): Promise => { }, build: { outDir: WEB_OUTPUT_DIRECTORY, - minify: 'esbuild', + minify: isProduction ? 'esbuild' : false, emptyOutDir: false, + sourcemap: isProduction ? false : true, lib: { entry: path.join(PROJECT_DIRECTORY, `/src/${widgetName}.editorPreview.tsx`), name: `${widgetName}.editorPreview`, @@ -62,7 +64,7 @@ export const getEditorPreviewDefaultConfig = async (): Promise => { }; }; -export const getViteDefaultConfig = async (userCustomConfig?: UserConfig): Promise => { +export const getViteDefaultConfig = async (isProduction: boolean, userCustomConfig?: UserConfig): Promise => { const widgetName = await getWidgetName(); const viteOutputDirectory = await getViteOutputDirectory(); @@ -70,13 +72,15 @@ export const getViteDefaultConfig = async (userCustomConfig?: UserConfig): Promi plugins: [react()], define: { 'process.env': {}, - 'process.env.NODE_ENV': '"production"' + 'process.env.NODE_ENV': isProduction ? '"production"' : '"development"' }, build: { outDir: viteOutputDirectory, - minify: 'esbuild', - cssMinify: 'esbuild', + minify: isProduction ? 'esbuild' : false, + cssMinify: isProduction ? 'esbuild' : false, + sourcemap: isProduction ? false : true, lib: { + formats: isProduction ? ['umd'] : ['es', 'umd'], entry: path.join(PROJECT_DIRECTORY, `/src/${widgetName}.tsx`), name: widgetName, fileName: (format, entry) => {