/// import path from 'path' import { defineConfig } from 'vite' import Vue from '@vitejs/plugin-vue' import Pages from 'vite-plugin-pages' import Layouts from 'vite-plugin-vue-layouts' import Icons from 'unplugin-icons/vite' import IconsResolver from 'unplugin-icons/resolver' import Components from 'unplugin-vue-components/vite' import AutoImport from 'unplugin-auto-import/vite' import Markdown from 'vite-plugin-md' import WindiCSS from 'vite-plugin-windicss' //import { VitePWA } from 'vite-plugin-pwa' import VueI18n from '@intlify/vite-plugin-vue-i18n' import Inspect from 'vite-plugin-inspect' import Prism from 'markdown-it-prism' import LinkAttributes from 'markdown-it-link-attributes' import inject from '@rollup/plugin-inject' const markdownWrapperClasses = 'prose prose-sm m-auto text-left' export default defineConfig({ resolve: { alias: { '~/': `${path.resolve(__dirname, 'src')}/`, // *** vue-tailwind-ethereum-template aliases *** // src: path.resolve(__dirname, 'src'), // assert: require.resolve('assert/'), // crypto: require.resolve('crypto-browserify'), // http: require.resolve('stream-http'), // https: require.resolve('https-browserify'), // os: require.resolve('os-browserify/browser'), // stream: require.resolve('stream-browserify'), }, }, plugins: [ Vue({ include: [/\.vue$/, /\.md$/], }), // https://github.com/hannoeru/vite-plugin-pages Pages({ extensions: ['vue', 'md'], }), // https://github.com/JohnCampionJr/vite-plugin-vue-layouts Layouts(), // https://github.com/antfu/unplugin-auto-import AutoImport({ imports: [ 'vue', 'vue-router', 'vue-i18n', '@vueuse/head', '@vueuse/core', 'vitest', ], dts: 'src/auto-imports.d.ts', }), // https://github.com/antfu/unplugin-vue-components Components({ // allow auto load markdown components under `./src/components/` extensions: ['vue', 'md'], // allow auto import and register components used in markdown include: [/\.vue$/, /\.vue\?vue/, /\.md$/], // custom resolvers resolvers: [ // auto import icons // https://github.com/antfu/unplugin-icons IconsResolver({ componentPrefix: '', enabledCollections: ['carbon'] }), ], dts: 'src/components.d.ts', }), // https://github.com/antfu/unplugin-icons Icons({ autoInstall: true, }), // https://github.com/antfu/vite-plugin-windicss WindiCSS({ safelist: markdownWrapperClasses, }), // https://github.com/antfu/vite-plugin-md // Don't need this? Try vitesse-lite: https://github.com/antfu/vitesse-lite Markdown({ wrapperClasses: markdownWrapperClasses, headEnabled: true, markdownItSetup(md) { // https://prismjs.com/ md.use(Prism) md.use(LinkAttributes, { pattern: /^https?:\/\//, attrs: { target: '_blank', rel: 'noopener', }, }) }, }), // VitePWA({ // registerType: 'autoUpdate', // includeAssets: ['favicon.svg', 'robots.txt', 'safari-pinned-tab.svg'], // manifest: { // name: 'ThreeD Garden', // short_name: 'ThreeD Garden', // description: '3D WordPress Plugin', // theme_color: '#076AE0', // background_color: "#222222", // icons: [ // { // src: '/pwa-192x192.png', // sizes: '192x192', // type: 'image/png', // }, // { // src: '/pwa-512x512.png', // sizes: '512x512', // type: 'image/png', // }, // { // src: '/pwa-512x512.png', // sizes: '512x512', // type: 'image/png', // purpose: 'any maskable', // }, // ], // //start_url: "index.php", // //display: "standalone" // }, // workbox: { // swDest: path.resolve(__dirname, '../public/dist/threedgarden-sw.js'), // // directoryIndex: path.resolve(__dirname, '../public/index.php'), // // directoryIndex: null, // // navigationPreload: false, // // exclude: [/\.map$/, /^manifest.*\.js(?:on)?$/, /\.html$/], // // navigateFallback: '/index.php', // // templatedURLs: { // // '/scene/mcgee-home-garden/': ['../index.php'] // // } // // globPatterns: [ // // // '*/*.*', // // // '*.*', // // 'index.html' // // ], // }, // // injectManifest: { // // swDest: path.resolve(__dirname, '../public/dist/threedgarden-sw.js') // // }, // }), // https://github.com/intlify/bundle-tools/tree/main/packages/vite-plugin-vue-i18n VueI18n({ runtimeOnly: true, compositionOnly: true, include: [path.resolve(__dirname, 'locales/**')], }), // https://github.com/antfu/vite-plugin-inspect Inspect({ // change this to enable inspect for debugging enabled: false, }), ], server: { fs: { strict: true, }, }, // // https://github.com/antfu/vite-ssg // ssgOptions: { // script: 'async', // 'sync' | 'async' | 'defer' | 'async defer' // formatting: 'none', // 'none' | 'minify' | 'prettify' // // mock: true, // browser window, document, etc.. default false // // includeAllRoutes: false, // default false // // includedRoutes(routes) { // // return ['index'] // // } // // mode: 'production', // }, optimizeDeps: { include: [ 'vue', 'vue-router', '@vueuse/core', '@vueuse/head', ], exclude: [ 'vue-demi', ], }, // https://github.com/vitest-dev/vitest test: { include: ['test/**/*.test.ts'], environment: 'jsdom', deps: { inline: ['@vue', '@vueuse', 'vue-demi'], }, }, // config // root: '.', mode: 'development', // base: process.env.APP_ENV === 'development' // ? '/wp-content/plugins/threed-garden/public/dist/' // : '/wp-content/plugins/threed-garden/public/dist/', build: { // output dir for production build // outDir: path.resolve(__dirname, '../public/dist'), emptyOutDir: true, // emit manifest so PHP can find the hashed files manifest: true, // lib: { // entry: resolve(__dirname, 'src/main.ts'), // name: 'threedgarden-sw', // formats: ['es'], // fileName: (format) => `my-lib.${format}.js` // }, // ignored when using output.assetFileNames //assetsDir: './assets/', cssCodeSplit: false, minify: false, //ssr: true, rollupOptions: { plugins: [inject({ Buffer: ['buffer', 'Buffer'] })], // input: { // //main: 'index.html', // main: path.resolve(__dirname, 'index.html'), // //main: path.resolve(__dirname, 'index.php'), // //main: '.', // //main: 'src/main.ts', // //a: 'index.html', // //a: 'src/main.ts', // //'b/index': path.resolve(__dirname, 'index.html'), // //b: path.resolve(__dirname, 'index.html'), // }, // make sure to externalize deps that shouldn't be bundled // into your library //external: ['vue', 'jquery'], output: { //format: 'cjs', // ('es' | 'cjs' | 'umd' | 'iife') name: 'ThreeDGardenBundle', entryFileNames: `assets/[name].js`, chunkFileNames: `assets/[name].js`, assetFileNames: `assets/[name].[ext]`, // Provide global variables to use in the UMD build // for externalized deps // globals: { // vue: 'Vue', // jquery: '$' // } } }, commonjsOptions: { transformMixedEsModules: true, }, }, })