From 511cc66d60b799e5cceb883f4baa9b8e92f880f2 Mon Sep 17 00:00:00 2001 From: hexqi Date: Sat, 8 Jun 2024 09:39:46 +0800 Subject: [PATCH 1/2] feat: add vite config package --- designer-demo/package.json | 7 +- designer-demo/src/main.js | 1 + designer-demo/vite.config.js | 7 +- packages/build/vite-config/index.js | 2 + packages/build/vite-config/package.json | 65 +++++++++++++++++++ .../vite-config/src/default-config.js} | 16 ++--- .../vite-config/src}/externalDeps.js | 0 .../src}/localCdnFile/copyBundleDeps.js | 0 .../src}/localCdnFile/copyImportMap.js | 0 .../src}/localCdnFile/copyPreviewImportMap.js | 0 .../vite-config/src}/localCdnFile/index.js | 0 .../src}/localCdnFile/locateCdnNpmInfo.js | 0 .../src}/localCdnFile/replaceImportPath.mjs | 0 .../vite-config/src}/localCdnFile/utils.js | 0 .../vite-plugins/configureServerAddProxy.js | 0 .../vite-plugins/installPackageTemporary.js | 0 packages/build/vite-config/vite.config.js | 32 +++++++++ packages/common/package.json | 3 +- packages/design-core/package.json | 9 +-- packages/design-core/src/init.js | 2 - 20 files changed, 126 insertions(+), 18 deletions(-) create mode 100644 packages/build/vite-config/index.js create mode 100644 packages/build/vite-config/package.json rename packages/{design-core/vite.config.js => build/vite-config/src/default-config.js} (98%) rename packages/{design-core/scripts => build/vite-config/src}/externalDeps.js (100%) rename packages/{design-core/scripts => build/vite-config/src}/localCdnFile/copyBundleDeps.js (100%) rename packages/{design-core/scripts => build/vite-config/src}/localCdnFile/copyImportMap.js (100%) rename packages/{design-core/scripts => build/vite-config/src}/localCdnFile/copyPreviewImportMap.js (100%) rename packages/{design-core/scripts => build/vite-config/src}/localCdnFile/index.js (100%) rename packages/{design-core/scripts => build/vite-config/src}/localCdnFile/locateCdnNpmInfo.js (100%) rename packages/{design-core/scripts => build/vite-config/src}/localCdnFile/replaceImportPath.mjs (100%) rename packages/{design-core/scripts => build/vite-config/src}/localCdnFile/utils.js (100%) rename packages/{design-core/scripts => build/vite-config/src}/vite-plugins/configureServerAddProxy.js (100%) rename packages/{design-core/scripts => build/vite-config/src}/vite-plugins/installPackageTemporary.js (100%) create mode 100644 packages/build/vite-config/vite.config.js diff --git a/designer-demo/package.json b/designer-demo/package.json index 0c21c952a3..51c607e8b8 100644 --- a/designer-demo/package.json +++ b/designer-demo/package.json @@ -11,11 +11,16 @@ "vue": "^3.4.21", "@opentiny/tiny-engine": "workspace:^", "@opentiny/tiny-engine-entry": "workspace:^", - "@opentiny/tiny-engine-configurator": "workspace:*" + "@opentiny/tiny-engine-configurator": "workspace:*", + "@opentiny/vue": "~3.14.0", + "@opentiny/vue-design-smb": "~3.14.0", + "@opentiny/vue-renderless": "~3.14.0", + "@opentiny/vue-theme": "~3.14.0" }, "devDependencies": { "@vitejs/plugin-vue": "^5.0.4", "vite": "^5.2.7", + "@opentiny/tiny-engine-vite-config": "workspace:^", "@opentiny/tiny-engine-vite-plugin-meta-comments": "workspace:^" } } diff --git a/designer-demo/src/main.js b/designer-demo/src/main.js index 01e6d4f166..6defe9df2a 100644 --- a/designer-demo/src/main.js +++ b/designer-demo/src/main.js @@ -14,5 +14,6 @@ import { registry } from './defineEntry.js' import { init } from '@opentiny/tiny-engine' import { configurators } from './configurators.js' +import 'virtual:svg-icons-register' init({ registry, configurators }) diff --git a/designer-demo/vite.config.js b/designer-demo/vite.config.js index becb8ba82d..81ff3bf2a4 100644 --- a/designer-demo/vite.config.js +++ b/designer-demo/vite.config.js @@ -1,9 +1,12 @@ import path from 'node:path' import { defineConfig, mergeConfig } from 'vite' -import getDefaultConfig from '@opentiny/tiny-engine/vite.config.js' +import { getDefaultConfig } from '@opentiny/tiny-engine-vite-config' export default defineConfig((options) => { - const defaultConfig = getDefaultConfig(options) + const extOptions = { + iconDirs: [path.resolve(__dirname, './node_modules/@opentiny/tiny-engine/assets/')] + } + const defaultConfig = getDefaultConfig(options, extOptions) const devAlias = { '@opentiny/tiny-engine-controller/js': path.resolve(__dirname, '../packages/controller/js'), diff --git a/packages/build/vite-config/index.js b/packages/build/vite-config/index.js new file mode 100644 index 0000000000..9c7275d33f --- /dev/null +++ b/packages/build/vite-config/index.js @@ -0,0 +1,2 @@ +export { default as getDefaultConfig } from './src/default-config.js' +export { default as metaCommentsPlugin } from '@opentiny/tiny-engine-vite-plugin-meta-comments' diff --git a/packages/build/vite-config/package.json b/packages/build/vite-config/package.json new file mode 100644 index 0000000000..057aba73d2 --- /dev/null +++ b/packages/build/vite-config/package.json @@ -0,0 +1,65 @@ +{ + "name": "@opentiny/tiny-engine-vite-config", + "version": "1.0.0", + "description": "", + "type": "module", + "main": "./index.js", + "module": "./index.js", + "files": [ + "dist" + ], + "scripts": { + "build": "vite build" + }, + "dependencies": { + "@babel/core": "~7.23.2", + "@babel/generator": "~7.23.2", + "@babel/parser": "~7.23.2", + "@babel/traverse": "~7.23.2", + "@opentiny/tiny-engine-vite-plugin-meta-comments": "workspace:^", + "@babel/eslint-parser": "^7.21.3", + "@esbuild-plugins/node-globals-polyfill": "^0.2.3", + "@esbuild-plugins/node-modules-polyfill": "^0.2.2", + "@types/node": "^18.0.0", + "@vitejs/plugin-vue": "^4.2.3", + "@vitejs/plugin-vue-jsx": "^3.1.0", + "assert": "^2.0.0", + "buffer": "^6.0.3", + "cross-env": "^7.0.3", + "esbuild-plugin-copy": "^2.1.1", + "eslint": "^8.38.0", + "eslint-plugin-vue": "^8.0.0", + "fs-extra": "^10.1.0", + "husky": "^8.0.0", + "lerna": "^7.2.0", + "less": "^4.1.2", + "lint-staged": "^13.2.0", + "path": "^0.12.7", + "rimraf": "^3.0.2", + "rollup-plugin-polyfill-node": "^0.12.0", + "rollup-plugin-terser": "^7.0.2", + "rollup-plugin-visualizer": "^5.8.3", + "shelljs": "^0.8.5", + "svg-sprite-loader": "^6.0.11", + "vite": "^4.3.7", + "vite-plugin-monaco-editor": "^1.1.0", + "vite-plugin-static-copy": "^0.16.0", + "vite-plugin-svg-icons": "^2.0.1", + "vue-eslint-parser": "^8.0.1" + }, + "keywords": [], + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "https://github.com/opentiny/tiny-engine", + "directory": "packages/build/vite-config" + }, + "bugs": { + "url": "https://github.com/opentiny/tiny-engine/issues" + }, + "author": "OpenTiny Team", + "license": "MIT", + "homepage": "https://opentiny.design/tiny-engine" +} diff --git a/packages/design-core/vite.config.js b/packages/build/vite-config/src/default-config.js similarity index 98% rename from packages/design-core/vite.config.js rename to packages/build/vite-config/src/default-config.js index 6ab4fd3d6b..ebd6c63236 100644 --- a/packages/design-core/vite.config.js +++ b/packages/build/vite-config/src/default-config.js @@ -8,7 +8,7 @@ import nodeModulesPolyfillPluginCjs from '@esbuild-plugins/node-modules-polyfill import nodePolyfill from 'rollup-plugin-polyfill-node' import esbuildCopy from 'esbuild-plugin-copy' import { createSvgIconsPlugin } from 'vite-plugin-svg-icons' -import { importmapPlugin } from './scripts/externalDeps.js' +import { importmapPlugin } from './externalDeps.js' import visualizerCjs from 'rollup-plugin-visualizer' import { fileURLToPath } from 'node:url' import generateComment from '@opentiny/tiny-engine-vite-plugin-meta-comments' @@ -17,7 +17,7 @@ import { copyBundleDeps, copyPreviewImportMap, copyLocalImportMap -} from './scripts/localCdnFile/index.js' +} from './localCdnFile/index.js' const monacoEditorPlugin = monacoEditorPluginCjs.default const nodeGlobalsPolyfillPlugin = nodeGlobalsPolyfillPluginCjs.default @@ -80,11 +80,6 @@ const config = { } }), vueJsx(), - createSvgIconsPlugin({ - iconDirs: [path.resolve(__dirname, './assets/')], - symbolId: 'icon-[name]', - inject: 'body-last' - }) ], optimizeDeps: { esbuildOptions: { @@ -147,7 +142,7 @@ const importMapVersions = { tinyVue: '~3.14' } -export default defineConfig(({ command = 'serve', mode = 'serve' }) => { +export default defineConfig(({ command = 'serve', mode = 'serve' }, extOptions) => { const { VITE_CDN_DOMAIN = 'https://npm.onmicrosoft.cn', VITE_LOCAL_IMPORT_MAPS, @@ -231,6 +226,11 @@ export default defineConfig(({ command = 'serve', mode = 'serve' }) => { const importMapStyles = [`${VITE_CDN_DOMAIN}/@opentiny/vue-theme@${importMapVersions.tinyVue}/index.css`] config.plugins.push( + createSvgIconsPlugin({ + iconDirs: extOptions.iconDirs || [], + symbolId: 'icon-[name]', + inject: 'body-last' + }), monacoEditorPluginInstance, htmlPlugin(mode), isLocalImportMap diff --git a/packages/design-core/scripts/externalDeps.js b/packages/build/vite-config/src/externalDeps.js similarity index 100% rename from packages/design-core/scripts/externalDeps.js rename to packages/build/vite-config/src/externalDeps.js diff --git a/packages/design-core/scripts/localCdnFile/copyBundleDeps.js b/packages/build/vite-config/src/localCdnFile/copyBundleDeps.js similarity index 100% rename from packages/design-core/scripts/localCdnFile/copyBundleDeps.js rename to packages/build/vite-config/src/localCdnFile/copyBundleDeps.js diff --git a/packages/design-core/scripts/localCdnFile/copyImportMap.js b/packages/build/vite-config/src/localCdnFile/copyImportMap.js similarity index 100% rename from packages/design-core/scripts/localCdnFile/copyImportMap.js rename to packages/build/vite-config/src/localCdnFile/copyImportMap.js diff --git a/packages/design-core/scripts/localCdnFile/copyPreviewImportMap.js b/packages/build/vite-config/src/localCdnFile/copyPreviewImportMap.js similarity index 100% rename from packages/design-core/scripts/localCdnFile/copyPreviewImportMap.js rename to packages/build/vite-config/src/localCdnFile/copyPreviewImportMap.js diff --git a/packages/design-core/scripts/localCdnFile/index.js b/packages/build/vite-config/src/localCdnFile/index.js similarity index 100% rename from packages/design-core/scripts/localCdnFile/index.js rename to packages/build/vite-config/src/localCdnFile/index.js diff --git a/packages/design-core/scripts/localCdnFile/locateCdnNpmInfo.js b/packages/build/vite-config/src/localCdnFile/locateCdnNpmInfo.js similarity index 100% rename from packages/design-core/scripts/localCdnFile/locateCdnNpmInfo.js rename to packages/build/vite-config/src/localCdnFile/locateCdnNpmInfo.js diff --git a/packages/design-core/scripts/localCdnFile/replaceImportPath.mjs b/packages/build/vite-config/src/localCdnFile/replaceImportPath.mjs similarity index 100% rename from packages/design-core/scripts/localCdnFile/replaceImportPath.mjs rename to packages/build/vite-config/src/localCdnFile/replaceImportPath.mjs diff --git a/packages/design-core/scripts/localCdnFile/utils.js b/packages/build/vite-config/src/localCdnFile/utils.js similarity index 100% rename from packages/design-core/scripts/localCdnFile/utils.js rename to packages/build/vite-config/src/localCdnFile/utils.js diff --git a/packages/design-core/scripts/vite-plugins/configureServerAddProxy.js b/packages/build/vite-config/src/vite-plugins/configureServerAddProxy.js similarity index 100% rename from packages/design-core/scripts/vite-plugins/configureServerAddProxy.js rename to packages/build/vite-config/src/vite-plugins/configureServerAddProxy.js diff --git a/packages/design-core/scripts/vite-plugins/installPackageTemporary.js b/packages/build/vite-config/src/vite-plugins/installPackageTemporary.js similarity index 100% rename from packages/design-core/scripts/vite-plugins/installPackageTemporary.js rename to packages/build/vite-config/src/vite-plugins/installPackageTemporary.js diff --git a/packages/build/vite-config/vite.config.js b/packages/build/vite-config/vite.config.js new file mode 100644 index 0000000000..11691a3fc9 --- /dev/null +++ b/packages/build/vite-config/vite.config.js @@ -0,0 +1,32 @@ +/** + * Copyright (c) 2023 - present TinyEngine Authors. + * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd. + * + * Use of this source code is governed by an MIT-style license. + * + * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, + * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR + * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS. + * + */ + +import { defineConfig } from 'vite' +import path from 'path' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [], + publicDir: false, + resolve: {}, + build: { + lib: { + entry: path.resolve(__dirname, './index.js'), + name: 'vite-config', + fileName: 'index', + formats: ['es', 'cjs'] + }, + rollupOptions: { + external: ['node:fs', 'node:path', 'vue', /@babel\/.*/, /@opentiny\/tiny-engine.*/, /@opentiny\/vue.*/] + } + } +}) diff --git a/packages/common/package.json b/packages/common/package.json index 884f4a15fd..9cc6401f30 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -13,7 +13,8 @@ ".": "./dist/index.js" }, "files": [ - "dist" + "dist", + "assets" ], "repository": { "type": "git", diff --git a/packages/design-core/package.json b/packages/design-core/package.json index b71e7f5d3f..566a35fad1 100644 --- a/packages/design-core/package.json +++ b/packages/design-core/package.json @@ -14,12 +14,13 @@ ], "module": "index.js", "main": "index.js", + "files": [ + "dist", + "assets" + ], "exports": { ".": "index.js", - "./canvas": "./canvas.js", - "./vite.config.js": "./vite.config.js", - "./config/lowcode.config": "./config/lowcode.config.js", - "./scripts/externalDeps": "./scripts/externalDeps.js" + "./canvas": "./canvas.js" }, "scripts": { "dev": "cross-env NODE_OPTIONS=--max-old-space-size=10240 VITE_API_MOCK=mock vite", diff --git a/packages/design-core/src/init.js b/packages/design-core/src/init.js index d7ca59ea22..1d60271525 100644 --- a/packages/design-core/src/init.js +++ b/packages/design-core/src/init.js @@ -23,8 +23,6 @@ import App from './App.vue' import defaultRegistry from '../registry.js' import { registerConfigurators } from './registerConfigurators' -import 'virtual:svg-icons-register' - const defaultLifeCycles = { beforeAppCreate: ({ registry }) => { // 合并用户自定义注册表 From 140f052d256469e7a648d8bbbe2915077848fa45 Mon Sep 17 00:00:00 2001 From: hexqi Date: Sat, 8 Jun 2024 09:45:48 +0800 Subject: [PATCH 2/2] fix: code review --- packages/common/package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/common/package.json b/packages/common/package.json index 9cc6401f30..884f4a15fd 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -13,8 +13,7 @@ ".": "./dist/index.js" }, "files": [ - "dist", - "assets" + "dist" ], "repository": { "type": "git",