199 lines
27 KiB
JavaScript
199 lines
27 KiB
JavaScript
|
// vite.config.ts
|
|||
|
import { URL, fileURLToPath } from "node:url";
|
|||
|
import { defineConfig, loadEnv } from "file:///C:/Users/22214/Desktop/%E6%99%BA%E8%83%BD%E5%B9%B3%E5%8F%B0/Industrial-image-management-system---web/node_modules/vite/dist/node/index.js";
|
|||
|
|
|||
|
// config/plugins/index.ts
|
|||
|
import vue from "file:///C:/Users/22214/Desktop/%E6%99%BA%E8%83%BD%E5%B9%B3%E5%8F%B0/Industrial-image-management-system---web/node_modules/@vitejs/plugin-vue/dist/index.mjs";
|
|||
|
import vueJsx from "file:///C:/Users/22214/Desktop/%E6%99%BA%E8%83%BD%E5%B9%B3%E5%8F%B0/Industrial-image-management-system---web/node_modules/@vitejs/plugin-vue-jsx/dist/index.mjs";
|
|||
|
|
|||
|
// config/plugins/app-info.ts
|
|||
|
import boxen from "file:///C:/Users/22214/Desktop/%E6%99%BA%E8%83%BD%E5%B9%B3%E5%8F%B0/Industrial-image-management-system---web/node_modules/boxen/index.js";
|
|||
|
import picocolors from "file:///C:/Users/22214/Desktop/%E6%99%BA%E8%83%BD%E5%B9%B3%E5%8F%B0/Industrial-image-management-system---web/node_modules/picocolors/picocolors.js";
|
|||
|
function appInfo() {
|
|||
|
return {
|
|||
|
name: "appInfo",
|
|||
|
apply: "serve",
|
|||
|
async buildStart() {
|
|||
|
const { bold, green, cyan, bgGreen, underline } = picocolors;
|
|||
|
console.log(
|
|||
|
boxen(
|
|||
|
`${bold(green(`${bgGreen("ContiNew Admin v4.0.0-SNAPSHOT")}`))}
|
|||
|
${cyan("\u5728\u7EBF\u6587\u6863\uFF1A")}${underline("https://continew.top")}
|
|||
|
${cyan("\u5E38\u89C1\u95EE\u9898\uFF1A")}${underline("https://continew.top/admin/faq.html")}
|
|||
|
${cyan("\u6301\u7EED\u8FED\u4EE3\u4F18\u5316\u7684\u524D\u540E\u7AEF\u5206\u79BB\u4E2D\u540E\u53F0\u7BA1\u7406\u7CFB\u7EDF\u6846\u67B6\u3002")}`,
|
|||
|
{
|
|||
|
padding: 1,
|
|||
|
margin: 1,
|
|||
|
borderStyle: "double",
|
|||
|
textAlignment: "center"
|
|||
|
}
|
|||
|
)
|
|||
|
);
|
|||
|
}
|
|||
|
};
|
|||
|
}
|
|||
|
|
|||
|
// config/plugins/devtools.ts
|
|||
|
import VueDevTools from "file:///C:/Users/22214/Desktop/%E6%99%BA%E8%83%BD%E5%B9%B3%E5%8F%B0/Industrial-image-management-system---web/node_modules/vite-plugin-vue-devtools/dist/vite.mjs";
|
|||
|
function createDevtools(env) {
|
|||
|
const { VITE_OPEN_DEVTOOLS } = env;
|
|||
|
return VITE_OPEN_DEVTOOLS === "true" && VueDevTools();
|
|||
|
}
|
|||
|
|
|||
|
// config/plugins/auto-import.ts
|
|||
|
import autoImport from "file:///C:/Users/22214/Desktop/%E6%99%BA%E8%83%BD%E5%B9%B3%E5%8F%B0/Industrial-image-management-system---web/node_modules/unplugin-auto-import/dist/vite.js";
|
|||
|
function createAutoImport() {
|
|||
|
return autoImport({
|
|||
|
// 自动导入 vue 相关函数
|
|||
|
imports: ["vue", "vue-router", {
|
|||
|
// vue 3.5.x
|
|||
|
vue: ["useTemplateRef", "onWatcherCleanup", "useId"]
|
|||
|
}],
|
|||
|
dts: "./src/types/auto-imports.d.ts"
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
// config/plugins/components.ts
|
|||
|
import components from "file:///C:/Users/22214/Desktop/%E6%99%BA%E8%83%BD%E5%B9%B3%E5%8F%B0/Industrial-image-management-system---web/node_modules/unplugin-vue-components/dist/vite.mjs";
|
|||
|
function createComponents() {
|
|||
|
return components({
|
|||
|
// 指定组件位置,默认是 src/components 自动导入自定义组件
|
|||
|
dirs: ["src/components"],
|
|||
|
extensions: ["vue", "tsx"],
|
|||
|
// 配置文件生成位置
|
|||
|
dts: "./src/types/components.d.ts"
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
// config/plugins/svg-icon.ts
|
|||
|
import path from "node:path";
|
|||
|
import process2 from "node:process";
|
|||
|
import { createSvgIconsPlugin } from "file:///C:/Users/22214/Desktop/%E6%99%BA%E8%83%BD%E5%B9%B3%E5%8F%B0/Industrial-image-management-system---web/node_modules/vite-plugin-svg-icons/dist/index.mjs";
|
|||
|
function createSvgIcon(isBuild) {
|
|||
|
return createSvgIconsPlugin({
|
|||
|
// 指定需要缓存的图标文件夹
|
|||
|
iconDirs: [path.resolve(process2.cwd(), "src/assets/icons")],
|
|||
|
// 指定 symbolId 格式
|
|||
|
symbolId: "icon-[dir]-[name]",
|
|||
|
svgoOptions: isBuild
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
// config/plugins/mock.ts
|
|||
|
import { viteMockServe } from "file:///C:/Users/22214/Desktop/%E6%99%BA%E8%83%BD%E5%B9%B3%E5%8F%B0/Industrial-image-management-system---web/node_modules/vite-plugin-mock/dist/index.js";
|
|||
|
function createMock(env, isBuild) {
|
|||
|
const { VITE_BUILD_MOCK } = env;
|
|||
|
return viteMockServe({
|
|||
|
mockPath: "src/mock",
|
|||
|
// 目录位置
|
|||
|
logger: !isBuild,
|
|||
|
// 是否在控制台显示请求日志
|
|||
|
supportTs: true,
|
|||
|
// 是否读取 ts 文件模块
|
|||
|
localEnabled: true,
|
|||
|
// 设置是否启用本地mock文件
|
|||
|
prodEnabled: isBuild && VITE_BUILD_MOCK === "true",
|
|||
|
// 设置打包是否启用mock功能
|
|||
|
// 这样可以控制关闭mock的时候不让mock打包到最终代码内
|
|||
|
injectCode: `
|
|||
|
import { setupProdMockServer } from '../src/mock/index';
|
|||
|
setupProdMockServer();
|
|||
|
`
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
// config/plugins/index.ts
|
|||
|
function createVitePlugins(viteEnv, isBuild = false) {
|
|||
|
const vitePlugins = [appInfo(), vue(), vueJsx()];
|
|||
|
vitePlugins.push(createDevtools(viteEnv));
|
|||
|
vitePlugins.push(createAutoImport());
|
|||
|
vitePlugins.push(createComponents());
|
|||
|
vitePlugins.push(createSvgIcon(isBuild));
|
|||
|
vitePlugins.push(createMock(viteEnv, isBuild));
|
|||
|
return vitePlugins;
|
|||
|
}
|
|||
|
|
|||
|
// vite.config.ts
|
|||
|
var __vite_injected_original_import_meta_url = "file:///C:/Users/22214/Desktop/%E6%99%BA%E8%83%BD%E5%B9%B3%E5%8F%B0/Industrial-image-management-system---web/vite.config.ts";
|
|||
|
var vite_config_default = defineConfig(({ command, mode }) => {
|
|||
|
const env = loadEnv(mode, process.cwd());
|
|||
|
return {
|
|||
|
// 开发或生产环境服务的公共基础路径
|
|||
|
base: env.VITE_BASE,
|
|||
|
// 路径别名
|
|||
|
resolve: {
|
|||
|
alias: {
|
|||
|
"~": fileURLToPath(new URL("./", __vite_injected_original_import_meta_url)),
|
|||
|
"@": fileURLToPath(new URL("./src", __vite_injected_original_import_meta_url))
|
|||
|
}
|
|||
|
},
|
|||
|
// 引入sass全局样式变量
|
|||
|
css: {
|
|||
|
preprocessorOptions: {
|
|||
|
scss: {
|
|||
|
additionalData: `@use "@/styles/var.scss" as *;`,
|
|||
|
api: "modern-compiler"
|
|||
|
}
|
|||
|
}
|
|||
|
},
|
|||
|
// 添加需要vite优化的依赖
|
|||
|
optimizeDeps: {
|
|||
|
include: ["vue-draggable-plus"]
|
|||
|
},
|
|||
|
server: {
|
|||
|
// 服务启动时是否自动打开浏览器
|
|||
|
open: true,
|
|||
|
// 本地跨域代理 -> 代理到服务器的接口地址
|
|||
|
proxy: {
|
|||
|
[env.VITE_API_PREFIX]: {
|
|||
|
target: env.VITE_API_BASE_URL,
|
|||
|
// 后台服务器地址
|
|||
|
changeOrigin: true,
|
|||
|
// 是否允许不同源
|
|||
|
secure: false,
|
|||
|
// 支持https
|
|||
|
rewrite: (path2) => path2.replace(new RegExp(`^${env.VITE_API_PREFIX}`), "")
|
|||
|
}
|
|||
|
}
|
|||
|
},
|
|||
|
plugins: createVitePlugins(env, command === "build"),
|
|||
|
// 构建
|
|||
|
build: {
|
|||
|
chunkSizeWarningLimit: 2e3,
|
|||
|
// 消除打包大小超过500kb警告
|
|||
|
outDir: "dist",
|
|||
|
// 指定打包路径,默认为项目根目录下的dist目录
|
|||
|
minify: "terser",
|
|||
|
// Vite 2.6.x 以上需要配置 minify:"terser",terserOptions才能生效
|
|||
|
terserOptions: {
|
|||
|
compress: {
|
|||
|
keep_infinity: true,
|
|||
|
// 防止 Infinity 被压缩成 1/0,这可能会导致 Chrome 上的性能问题
|
|||
|
drop_console: command === "build",
|
|||
|
// 只在生产环境构建时去除 console
|
|||
|
drop_debugger: true
|
|||
|
// 生产环境去除 debugger
|
|||
|
},
|
|||
|
format: {
|
|||
|
comments: false
|
|||
|
// 删除注释
|
|||
|
}
|
|||
|
},
|
|||
|
// 静态资源打包到dist下的不同目录
|
|||
|
rollupOptions: {
|
|||
|
output: {
|
|||
|
chunkFileNames: "static/js/[name]-[hash].js",
|
|||
|
entryFileNames: "static/js/[name]-[hash].js",
|
|||
|
assetFileNames: "static/[ext]/[name]-[hash].[ext]"
|
|||
|
}
|
|||
|
}
|
|||
|
},
|
|||
|
// 以 envPrefix 开头的环境变量会通过 import.meta.env 暴露在你的客户端源码中。
|
|||
|
envPrefix: ["VITE", "FILE"]
|
|||
|
};
|
|||
|
});
|
|||
|
export {
|
|||
|
vite_config_default as default
|
|||
|
};
|
|||
|
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiLCAiY29uZmlnL3BsdWdpbnMvaW5kZXgudHMiLCAiY29uZmlnL3BsdWdpbnMvYXBwLWluZm8udHMiLCAiY29uZmlnL3BsdWdpbnMvZGV2dG9vbHMudHMiLCAiY29uZmlnL3BsdWdpbnMvYXV0by1pbXBvcnQudHMiLCAiY29uZmlnL3BsdWdpbnMvY29tcG9uZW50cy50cyIsICJjb25maWcvcGx1Z2lucy9zdmctaWNvbi50cyIsICJjb25maWcvcGx1Z2lucy9tb2NrLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJjb25zdCBfX3ZpdGVfaW5qZWN0ZWRfb3JpZ2luYWxfZGlybmFtZSA9IFwiQzpcXFxcVXNlcnNcXFxcMjIyMTRcXFxcRGVza3RvcFxcXFxcdTY2N0FcdTgwRkRcdTVFNzNcdTUzRjBcXFxcSW5kdXN0cmlhbC1pbWFnZS1tYW5hZ2VtZW50LXN5c3RlbS0tLXdlYlwiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9maWxlbmFtZSA9IFwiQzpcXFxcVXNlcnNcXFxcMjIyMTRcXFxcRGVza3RvcFxcXFxcdTY2N0FcdTgwRkRcdTVFNzNcdTUzRjBcXFxcSW5kdXN0cmlhbC1pbWFnZS1tYW5hZ2VtZW50LXN5c3RlbS0tLXdlYlxcXFx2aXRlLmNvbmZpZy50c1wiO2NvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9pbXBvcnRfbWV0YV91cmwgPSBcImZpbGU6Ly8vQzovVXNlcnMvMjIyMTQvRGVza3RvcC8lRTYlOTklQkElRTglODMlQkQlRTUlQjklQjMlRTUlOEYlQjAvSW5kdXN0cmlhbC1pbWFnZS1tYW5hZ2VtZW50LXN5c3RlbS0tLXdlYi92aXRlLmNvbmZpZy50c1wiO2ltcG9ydCB7IFVSTCwgZmlsZVVSTFRvUGF0aCB9IGZyb20gJ25vZGU6dXJsJ1xyXG5pbXBvcnQgeyBkZWZpbmVDb25maWcsIGxvYWRFbnYgfSBmcm9tICd2aXRlJ1xyXG5pbXBvcnQgY3JlYXRlVml0ZVBsdWdpbnMgZnJvbSAnLi9jb25maWcvcGx1Z2lucydcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbmZpZygoeyBjb21tYW5kLCBtb2RlIH0pID0+IHtcclxuICBjb25zdCBlbnYgPSBsb2FkRW52KG1vZGUsIHByb2Nlc3MuY3dkKCkpIGFzIEltcG9ydE1ldGFFbnZcclxuXHJcbiAgcmV0dXJuIHtcclxuICAgIC8vIFx1NUYwMFx1NTNEMVx1NjIxNlx1NzUxRlx1NEVBN1x1NzNBRlx1NTg4M1x1NjcwRFx1NTJBMVx1NzY4NFx1NTE2Q1x1NTE3MVx1NTdGQVx1Nzg0MFx1OERFRlx1NUY4NFxyXG4gICAgYmFzZTogZW52LlZJVEVfQkFTRSxcclxuICAgIC8vIFx1OERFRlx1NUY4NFx1NTIyQlx1NTQwRFxyXG4gICAgcmVzb2x2ZToge1xyXG4gICAgICBhbGlhczoge1xyXG4gICAgICAgICd+JzogZmlsZVVSTFRvUGF0aChuZXcgVVJMKCcuLycsIGltcG9ydC5tZXRhLnVybCkpLFxyXG4gICAgICAgICdAJzogZmlsZVVSTFRvUGF0aChuZXcgVVJMKCcuL3NyYycsIGltcG9ydC5tZXRhLnVybCkpLFxyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIC8vIFx1NUYxNVx1NTE2NXNhc3NcdTUxNjhcdTVDNDBcdTY4MzdcdTVGMEZcdTUzRDhcdTkxQ0ZcclxuICAgIGNzczoge1xyXG4gICAgICBwcmVwcm9jZXNzb3JPcHRpb25zOiB7XHJcbiAgICAgICAgc2Nzczoge1xyXG4gICAgICAgICAgYWRkaXRpb25hbERhdGE6IGBAdXNlIFwiQC9zdHlsZXMvdmFyLnNjc3NcIiBhcyAqO2AsXHJcbiAgICAgICAgICBhcGk6ICdtb2Rlcm4tY29tcGlsZXInLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgLy8gXHU2REZCXHU1MkEwXHU5NzAwXHU4OTgxdml0ZVx1NEYxOFx1NTMxNlx1NzY4NFx1NEY5RFx1OEQ1NlxyXG4gICAgb3B0aW1pemVEZXBzOiB7XHJcbiAgICAgIGluY2x1ZGU6IFsndnVlLWRyYWdnYWJsZS1wbHVzJ10sXHJcbiAgICB9LFxyXG4gICAgc2VydmVyOiB7XHJcbiAgICAgIC8vIFx1NjcwRFx1NTJBMVx1NTQyRlx1NTJBOFx1NjVGNlx1NjYyRlx1NTQyNlx1ODFFQVx1NTJBOFx1NjI1M1x1NUYwMFx1NkQ0Rlx1ODlDOFx1NTY2OFxyXG4gICAgICBvcGVuOiB0cnVlLFxyXG4gICAgICAvLyBcdTY3MkNcdTU3MzBcdThERThcdTU3REZcdTRFRTNcdTc0MDYgLT4gXHU0RUUzXHU3NDA2XHU1MjMwXHU2NzBEXHU1MkExXHU1NjY4XHU3Njg0XHU2M0E1XHU1M0UzXHU1NzMwXHU1NzQwXHJcbiAgICAgIHByb3h5OiB7XHJcbiAgICAgICAgW2Vudi5WSVRFX0FQSV9QUkVGSVhdOiB7XHJcbiAgICAgICAgICB0YXJnZXQ6IGVudi5WSVRFX0FQSV9CQVNFX1VSTCwgLy8gXHU1NDBFXHU1M0YwXHU2NzBEXHU1MkExXHU1NjY4XHU1NzMwXHU1NzQwXHJcbiAgICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsIC8vIFx1NjYyRlx1NTQyNlx1NTE0MVx1OEJCOFx1NEUwRFx1NTQwQ1x1NkU5MFxyXG4gICAgICAgICAgc2VjdXJlOiBmYWxzZSwgLy8gXHU2NTJGXHU2MzAxaHR0cHNcclxuICAgICAgICAgIHJld3JpdGU6IChwYXRoKSA9PiBwYXRoLnJlcGxhY2UobmV3IFJlZ0V4cChgXiR7ZW52LlZJVEVfQVBJX1BSRUZJWH1gKSwgJycpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgcGx1Z2luczogY3JlYXRlVml0ZVBsdWdpbnMoZW52LCBjb21tYW5kID09PSAnYnVpbGQnKSxcclxuICAgIC8vIFx1Njc4NFx1NUVGQVxyXG4gICAgYnVpbGQ6IHtcclxuICAgICAgY2h1bmtTaXplV2FybmluZ0xpbWl0OiAyMDAwLCAvLyBcdTZEODhcdTk2NjRcdTYyNTNcdTUzMDVcdTU5MjdcdTVDMEZcdThEODVcdThGQzc1MDBrYlx1OEI2Nlx1NTQ0QVxyXG4gICAgICBvdXREaXI6ICdkaXN0JywgLy8gXHU2MzA3XHU1QjlBXHU2MjUzXHU1MzA1XHU4REVGXHU1Rjg0XHVGRjBDXHU5RUQ4XHU4QkE0XHU0RTNBXHU5ODc5XHU3NkVFXHU2ODM5XHU3NkVFXHU1RjU1XHU0RTBCXHU3Njg0ZGlzdFx1NzZFRVx1NUY1NVxyXG4gICAgICBtaW5pZnk6ICd0ZXJzZXInLCAvLyBWaXRlIDIuNi54IFx1NEVFNVx1NEUwQVx1OTcwMFx1ODk4MVx1OTE0RFx1N0Y2RSBtaW5pZnlcdUZGMUFcInRlcnNlclwiXHVGRjBDdGVyc2VyT3B0aW9uc1x1NjI0RFx1ODBGRFx1NzUxRlx1NjU0OFxyXG4gICAgICB0ZXJzZXJPcHRpb25zOiB7XHJcbiAgICAgICAgY29tcHJlc3M6IHtcclxuICAgI
|