123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- import { resolve } from 'node:path'
- import viteCompression from 'vite-plugin-compression'
- import { defineConfig, loadEnv, splitVendorChunkPlugin } from 'vite'
- import vue2 from '@vitejs/plugin-vue2'
- import { ViteEjsPlugin } from 'vite-plugin-ejs'
- import { viteExternalsPlugin } from 'vite-plugin-externals'
- import { visualizer } from 'rollup-plugin-visualizer'
- import eslintPlugin from '@nabla/vite-plugin-eslint'
- import cssInjectedByJsPlugin from 'vite-plugin-css-injected-by-js'
- function getExternals(isDev) {
- if (isDev) {
- // serve
- return {}
- }
- // build
- return {
- // 'vue': 'Vue',
- // 'vue-router': 'VueRouter',
- // 'vuex': 'Vuex',
- axios: 'axios',
- // 'vant': 'vant',
- 'js-cookie': 'Cookies'
- }
- }
- export default defineConfig(({ mode, command }) => {
- const env = loadEnv(mode, process.cwd())
- return {
- base: env.VITE_APP_BASE_PUBLIC,
- build: {
- sourcemap: true,
- emptyOutDir: true,
- lib: {
- entry: './src/entry.js', // 入口文件
- name: 'TestBindPhone', // 库的全局变量名
- fileName: 'jy-bind-phone' // 输出的文件名
- },
- rollupOptions: {
- // 确保外部化处理 Vue,避免将 Vue等 打包进库
- external: ['vue', 'vant', 'vuex', 'vue-router'],
- output: {
- globals: {
- vue: 'Vue'
- }
- }
- },
- target: 'es2015' // 指定目标语法版本
- },
- plugins: [
- splitVendorChunkPlugin(),
- vue2(),
- ViteEjsPlugin({
- assets: {
- version: Date.now()
- }
- }),
- eslintPlugin(),
- // 不打包的库(外部需要通过cdn引入)
- viteExternalsPlugin(getExternals(command)),
- viteCompression({
- threshold: 1024
- }),
- visualizer(),
- cssInjectedByJsPlugin()
- ],
- resolve: {
- alias: [
- {
- find: /^~/,
- replacement: ''
- },
- {
- find: '@',
- replacement: resolve(__dirname, 'src')
- }
- ],
- extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue']
- },
- server: {
- host: '0.0.0.0',
- port: 8080,
- proxy: {
- // 接口解密iframe
- '^/page_decrypt': {
- target: 'https://jybx-webtest.jydev.jianyu360.com',
- changeOrigin: true
- },
- '/jyapi': {
- target: 'https://app2-jytest.jydev.jianyu360.com',
- changeOrigin: true,
- rewrite: (path) => path.replace(/^\/jyapi/, '')
- },
- '/api': {
- target: 'https://app2-jytest.jydev.jianyu360.com',
- changeOrigin: true,
- rewrite: (path) => path.replace(/^\/api/, '')
- }
- }
- }
- }
- })
|