forked from mengyxu/noob-components
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
3.4 KiB
96 lines
3.4 KiB
import { defineConfig } from "vite"; |
|
import vue from "@vitejs/plugin-vue"; |
|
import vueJsx from "@vitejs/plugin-vue-jsx"; |
|
import legacy from "@vitejs/plugin-legacy"; |
|
import dts from "vite-plugin-dts"; |
|
import VueDevTools from "vite-plugin-vue-devtools"; |
|
import { resolve } from "path"; |
|
import { execSync } from "child_process"; |
|
|
|
export default defineConfig(({ command, mode }) => { |
|
const isLibBuild = process.env.BUILD_LIB === "true"; |
|
process.env.VITE_GIT_HASH = execSync("git ls-files -s | git hash-object --stdin").toString().trimEnd(); |
|
|
|
return { |
|
envPrefix: ["VITE_", "VUE_"], |
|
define: { |
|
"process.env": "import.meta.env", |
|
}, |
|
plugins: [ |
|
vue(), |
|
vueJsx(), |
|
// Vue DevTools for debugging (only in non-lib builds) |
|
!isLibBuild && VueDevTools(), |
|
// Only use legacy plugin for app builds, not library builds |
|
!isLibBuild && |
|
legacy({ |
|
targets: ["defaults", "not IE 11"], |
|
}), |
|
// Generate TypeScript declaration files for library builds |
|
isLibBuild && |
|
dts({ |
|
include: ["**/*.ts", "**/*.vue"], |
|
exclude: ["node_modules", "dist", "dist-examples", "examples"], |
|
outDir: "dist", |
|
staticImport: true, |
|
insertTypesEntry: true, |
|
rollupTypes: false, |
|
}), |
|
].filter(Boolean), |
|
build: isLibBuild |
|
? { |
|
// Library build configuration |
|
sourcemap: true, |
|
lib: { |
|
entry: { |
|
index: resolve(__dirname, "index.ts"), |
|
"packages/index": resolve(__dirname, "packages/index.ts"), |
|
"packages/base/index": resolve(__dirname, "packages/base/index.ts"), |
|
"packages/tool/index": resolve(__dirname, "packages/tool/index.ts"), |
|
"packages/manage/index": resolve(__dirname, "packages/manage/index.ts"), |
|
"plugs/index": resolve(__dirname, "plugs/index.ts"), |
|
"plugs/composables/index": resolve(__dirname, "plugs/composables/index.ts"), |
|
"plugs/api/index": resolve(__dirname, "plugs/api/index.ts"), |
|
"plugs/http/index": resolve(__dirname, "plugs/http/index.ts"), |
|
"plugs/i18n/index": resolve(__dirname, "plugs/i18n/index.ts"), |
|
"plugs/config/index": resolve(__dirname, "plugs/config/index.ts"), |
|
"plugs/element/index": resolve(__dirname, "plugs/element/index.ts"), |
|
"plugs/store/index": resolve(__dirname, "plugs/store/index.ts"), |
|
"plugs/util/index": resolve(__dirname, "plugs/util/index.ts"), |
|
"plugs/websocket": resolve(__dirname, "plugs/websocket.ts"), |
|
}, |
|
formats: ["es"], |
|
}, |
|
rollupOptions: { |
|
external: [ |
|
"vue", |
|
"vue-router", |
|
"vuex", |
|
"vue3-i18n", |
|
"element-plus", |
|
"axios", |
|
"dayjs", |
|
"xterm", |
|
"xterm-addon-attach", |
|
"xterm-addon-fit", |
|
"noob-mengyxu", |
|
/^noob-mengyxu\//, |
|
], |
|
output: { |
|
assetFileNames: "assets/[name][extname]", |
|
entryFileNames: "[name].js", |
|
}, |
|
}, |
|
} |
|
: { |
|
// App build configuration (for examples) |
|
outDir: "dist-examples", |
|
}, |
|
resolve: { |
|
alias: { |
|
"@": resolve(__dirname, "examples"), |
|
"noob-mengyxu": resolve(__dirname, "index.ts"), |
|
}, |
|
}, |
|
}; |
|
});
|
|
|