<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # [vite.config.js](https://cn.vitejs.dev/config/) ## 示例1: ```js import { defineConfig } from "vite"; // 使用 defineConfig 幫手函數,這樣不用 jsdoc 注解也可以獲取類型提示 import vue from "@vitejs/plugin-vue"; const { resolve } = require("path"); export default ({ command, mode }) => { let isProd = command === "serve"; // 情景配置 是否為開發模式 serve 或 build return defineConfig({ /** * 在生產中服務時的基本公共路徑。 * @default '/' */ base: "/huangbiao", /** * 與“根”相關的目錄,構建輸出將放在其中。如果目錄存在,它將在構建之前被刪除。 * @default 'dist' */ outDir: "target", // port: 3000, // 是否自動在瀏覽器打開 open: true, // 是否開啟 https https: false, // 服務端渲染 ssr: false, //文件名哈希 filenameHashing: true, //查看插件API獲取Vite插件的更多細節 https://www.vitejs.net/guide/api-plugin.html plugins: [vue()], // 是否在保存的時候使用 `eslint-loader` 進行檢查。 lintOnSave: true, // 是否使用帶有瀏覽器內編譯器的完整構建版本 runtimeCompiler: false, // 是否為生產環境構建生成 source map? productionSourceMap: true, // 設置生成的 HTML 中 <link rel="stylesheet"> 和 <script> 標簽的 crossorigin 屬性。 crossorigin: "", //? 在生成的 HTML 中的 <link rel="stylesheet"> 和 <script> 標簽上啟用 Subresource Integrity (SRI)。 ? ? integrity: false, //? 調整內部的 webpack 配置 ? ? configureWebpack: () => {}, //(Object | Function) ? ? chainWebpack: () => {}, resolve: { alias: { // 設置為@則使用時為"@/components/index.module.css" "@": resolve(__dirname, "./src"), // 使用時為"@components/HelloWorld.vue" "@components": resolve(__dirname, "./src/components") } }, // 強制預構建插件包 // 會將引入的第三方文件移動到E:\gitcode\工程目錄\node_modules\.vite_opt_cache目錄中 看圖1 // 可通過import Mock from 'axios'使用 optimizeDeps: { include: ["axios"] }, server: { // 默認啟用并允許任何源 cors: true, host: '0.0.0.0', // 本地服務端口 port: 8006, hotOnly: false, // 設為 true 時若端口已被占用則會直接退出,而不是嘗試下一個可用端口 strictPort: true, // 代理 proxy: { // 字符串簡寫寫法 // '/foo': 'http://localhost:4567/foo', // 選項寫法 // '/api': { // target: 'http://jsonplaceholder.typicode.com', // changeOrigin: true, // rewrite: (path) => path.replace(/^\/api/, '') // }, // 正則表達式寫法 // '^/fallback/.*': { // target: 'http://jsonplaceholder.typicode.com', // changeOrigin: true, // rewrite: (path) => path.replace(/^\/fallback/, '') // } } }, // CSS 相關選項 css: { // 將組件內的 CSS 提取到一個單獨的 CSS 文件 (只用在生產環境中) // 也可以是一個傳遞給 `extract-text-webpack-plugin` 的選項對象 extract: true, // 是否開啟 CSS source map? sourceMap: false, // 為預處理器的 loader 傳遞自定義選項。比如傳遞給 // Css-loader 時,使用 `{ Css: { ... } }`。 loaderOptions: { css: { // 這里的選項會傳遞給 css-loader }, postcss: { // 這里的選項會傳遞給 postcss-loader } }, // 為所有的 CSS 及其預處理文件開啟 CSS Modules。 // 這個選項不會影響 `*.vue` 文件。 modules: false }, build: { // 基本路徑 publicPath: "./", target: "modules", //指定輸出路徑(相對于 項目根目錄). 建議使用系統默認 outDir: "dist", // 指定生成靜態資源的存放路徑(相對于 build.outDir) assetsDir: "assets", minify: "terser" // 混淆器,terser構建后文件體積更小 } // 在生產環境下為 Babel 和 TypeScript 使用 `thread-loader` ? ? // 在多核機器下會默認開啟。 ? ? parallel: require('os').cpus().length > 1, ? ? // PWA 插件的選項。 ? ? // 查閱 https://github.com/vuejs/vue-docs-zh-cn/blob/master/vue-cli-plugin-pwa/README.md ? ? pwa: {}, ? ? // 三方插件的選項 ? ? pluginOptions: { ? ? ? ? // ... ? ? } }); }; ``` ## 示例 2 ````js import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import path from 'path' /* //* 也可以使用函數來進行判斷是否要根據模式做一些處理 @params { command: 'build' | 'serve'; mode: string; } @example export default ({ command, mode }) => { return defineConfig({}) } */ // https://vitejs.dev/config/ // 這個函數就做了一個添加類型的作用 /* export function defineConfig(config: UserConfigExport): UserConfigExport { return config } */ export default defineConfig({ // 類型: string // default: process.cwd() // 項目根目錄,可以是一個絕對路徑,或者是一個相對于該配置文件本身的路徑 root: process.cwd(), // 類型: string // default: /, // 開發或者生產環境服務的公共基礎路徑,合法的值包括 /* 1. 絕對url路徑名,如`/foo/` 2. 完整的url,如`https://foo.com/` 3. 空字符串或`./`(用于開發環境) */ base: '/', // 類型: string, // 默認: command為serve時默認為`development`,為build時默認為`production` // 在配置中指明將會把`serve`和`build`時的模式都覆蓋掉 // 可以通過命令行`--mode`來重寫 mode: 'development', // 類型: Record<string, any> // 定義全局變量替換方式,每項在開發時會被定義為全局變量,而在構建時則是靜態替換 /* 1. 從 2.0.0-beta.70 版本開始,字符串值將作為一個直接的表達式,所以如果定義為了一個字符串常量,它需要被顯式地引用(例如:通過 JSON.stringify) 2. 替換知會在匹配到周圍是單詞邊界(\b)時執行 */ define: { a: 123, }, /* interface Plugin extends RollupPlugin { enforce?: 'pre' | 'post', apply?: 'serve' | 'build', config?: (config: UserConfig, env: ConfigEnv) => UserConfig | null | void, configResolved?: (config: ResolvedConfig) => void, configureServer?: ServerHook, transformIndexHtml?: IndexHtmlTransform, handleHotUpdate?( ctx: HmrContext ): Array<ModuleNode> | void | Promise<Array<ModuleNode> | void>, resolveId?( this: PluginContext, source: string, importer: string | undefined, options: { custom?: CustomPluginOptions }, ssr?: boolean ): Promise<ResolveIdResult> | ResolveIdResult load?( this: PluginContext, id: string, ssr?: boolean ): Promise<LoadResult> | LoadResult transform?( this: TransformPluginContext, code: string, id: string, ssr?: boolean ): Promise<TransformResult> | TransformResult } */ // 類型:(Plugin | Plugin[])[] // 需要用的的插件,配置模式的時候在這兒配置 /* @example vue: ```ts import vue from '@vitejs/plugin-vue' ... plugins: [vue()] ``` react: ```ts import reactRefresh from '@vitejs/plugin-react-refresh' ... plugins: [reactRefresh()] ``` */ plugins: [vue()], // 類型: string // 默認: public // 作為靜態資源服務的文件夾。這個目錄中的文件會再開發中被服務于 /,在構建時,會被拷貝到 outDir 根目錄,并沒有轉換,永遠只是復制到這里。該值可以是文件系統的絕對路徑,也可以是相對于項目根的路徑。 publicDir: path.resolve(__dirname, 'public'), // 解析配置 resolve: { // 類型: Record<string, string> | Array<{ find: string | RegExp, replacement: string }> // 別名 // 將會被傳遞到 @rollup/plugin-alias 作為它的 entries。也可以是一個對象,或一個 { find, replacement } 的數組 // 當使用文件系統路徑的別名時,請始終使用絕對路徑。相對路徑作別名值將按原樣使用導致不會解析到文件系統路徑中。 alias: { '@': path.resolve(__dirname, 'src'), }, // 類型: string[] // 如果你在你的應用程序中有相同依賴的副本(比如monorepos),使用這個選項來強制vite總是將列出的依賴關系解析到相同的副本(從項目根目錄) dedupe: [], // 類型: string[] // 在解析包的情景導出時允許的附加條件 /* 一個帶有情景導出的包可能在它的package.json中有以下exports字段 ```json { "exports": { ".": { "import": "./index.esm.js", "require": "./index.cjs.js" } } } ``` 在這里,`import`和`require`被稱為‘情景’。情景可以嵌套,并且應該從最特定的到最不特定的指定。 */ // Vite 有一個“允許的情景”列表和并且會匹配列表中第一個情景。默認允許的情景是:import,module,browser,default,和基于當前情景為 production/development。resolve.conditions 配置項使得可以指定其他允許的情景。 conditions: [], // 類型: string[], // 默認: ['module', 'jsnext:main', 'jsnext'] // `package.json`中,在解析包的入口點時嘗試的字段列表。注意,這比從`exports`字段解析的情景導出優先級低。 // 如果一個入口點從`exports`成功解析,主字段將被忽略 mainFields: [], // 類型: string[] // 默認: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json'] // 導入時想要省略的擴展名列表。 // 注意:不建議忽略自定義導入類型的擴展名(例如:`.vue`),因為它會干擾IDE和類型支持 extensions: [], }, // css配置 css: { /* @types ```ts interface CSSModulesOptions { scopeBehaviour?: 'global' | 'local' globalModulePaths?: string[] generateScopedName?: | string | ((name: string, filename: string, css: string) => string) hashPrefix?: string //* 默認:'camelCaseOnly' localsConvention?: 'camelCase' | 'camelCaseOnly' | 'dashes' | 'dashesOnly' } ``` */ // 配置`css modules`的行為,選項將被傳遞給`postcss-modules` modules: {}, // 類型: string | (postcss.ProcessOptions & { plugins?: postcss.Plugin[] }) // 內聯的PostCss配置(格式同postcss.config.js),或者一個(默認基于項目根目錄的)自定義的PostCss配置路徑。 // 其路徑搜索是通過`postcss-load-config`實現的 //* 注意:如果提供來該內聯配置,vite將不會搜索其他PostCss配置源 postcss: '', // 類型: Record<string, object> /* 指定傳遞給CSS預處理器的選項,例如: ```js export default { css: { preprocessorOptions: { scss: { additionalData: `$injectedColor: orange;` } } } } ``` */ preprocessorOptions: {}, }, // json配置 json: { // 類型: boolean // 默認: true // 是否支持從`.json`文件中進行按名導入 namedExports: true, // 類型: boolean // 默認: false // 若設置為 true,導入的 JSON 會被轉換為 export default JSON.parse("...") 會比轉譯成對象字面量性能更好,尤其是當 JSON 文件較大的時候 //* 開啟此項,則會禁用按名導入 stringify: false, }, // esbuild配置(vite使用了esbuild來進行編譯) // 類型: ESBuildOptions | false /* ESBuildOptions繼承自esbuild轉換選項(https://esbuild.github.io/api/#transform-api) 最常見的用例是自定義JSX ```js export default { esbuild: { jsxFactory: 'h', jsxFragment: 'Fragment' } } ``` 默認情況下,ESbuild 應用在 ts、jsx、tsx 文件。你可以通過 esbuild.include 和 esbuild.exclude 對其進行配置,它們兩個配置的類型是string | RegExp | (string | RegExp)[]。 設置成 false 可以禁用 ESbuild 轉換(默認應用于 .ts. .tsx 和 .jsx 文件)。 */ /* 此外,你還可以通過esbuild.jsxInject來自動為每一個被 ESbuild 轉換的文件注入 JSX helper。 ```js export default { esbuild: { jsxInject: `import React from 'react'` } } ``` */ esbuild: {}, // 靜態文件處理配置 // 類型: string | RegExp | (string | RegExp)[] // 相關內容(https://cn.vitejs.dev/guide/assets.html) // 指定其他文件類型作為靜態資源處理(這樣導入它們就會返回解析后的 URL) assetsInclude: '', // 日志級別配置 // 類型: 'info' | 'warn' | 'error' | 'silent' // 調整控制臺輸出的級別,默認為`info` logLevel: 'info', // 是否清屏 // 類型: boolean // 默認: true // 設為 false 可以避免 Vite 清屏而錯過在終端中打印某些關鍵信息。命令行模式下請通過 --clearScreen false 設置。 clearScreen: true, // 服務相關配置 server: { // 類型: string // 指定服務器主機名 host: 'localhost', // 類型: number // 指定服務器端口。 //* 注意:如果端口已經被使用,Vite 會自動嘗試下一個可用的端口,所以這可能不是服務器最終監聽的實際端口。 port: 10086, // 類型: boolean // 設為true時若端口已被占用則會直接退出,而不是嘗試下一個可用端口 strictPort: false, // 類型: boolean | https.ServerOptions // 啟用 TLS + HTTP/2。注意當 server.proxy option 也被使用時,將會僅使用 TLS。 // 這個值也可以是一個傳遞給 https.createServer() 的 選項對象。 https: false, // 類型: boolean | string // 在服務器啟動時自動在瀏覽器中打開應用程序 /* 注意: 當此值為字符串時,會被用作URL的路徑名 ```js export default { server: { open: '/docs/index.html' } } ``` */ open: true, // 本地服務代理 // 類型: Record<string, string | ProxyOptions> // 為開發服務器配置自定義代理規則。期望接收一個 { key: options } 對象。如果 key 值以 ^ 開頭,將會被解釋為 RegExp。 /* 使用`http-proxy`,完整選項詳見https://github.com/http-party/node-http-proxy#options @example ```js export default { server: { proxy: { // 字符串簡寫寫法 '/foo': 'http://localhost:4567/foo', // 選項寫法 '/api': { target: 'http://jsonplaceholder.typicode.com', changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, '') }, // 正則表達式寫法 '^/fallback/.*': { target: 'http://jsonplaceholder.typicode.com', changeOrigin: true, rewrite: (path) => path.replace(/^\/fallback/, '') } } } } ``` */ proxy: {}, // 類型: boolean | CorsOptions // 為開發服務器配置 CORS。默認啟用并允許任何源,傳遞一個 選項對象 來調整行為或設為 false 表示禁用。 cors: true, // 類型: boolean // 相關內容: https://cn.vitejs.dev/guide/dep-pre-bundling.html // 設置為`true`強制使依賴預構建 force: false, // 類型: boolean | { protocol?: string, host?: string, port?: number, path?: string, timeout?: number, overlay?: boolean } // 禁用或配置HMR鏈接(用于HMR websocket 必須使用不同的http服務器地址的情況) // 設置`server.hmr.overlay`為`false`可以禁用服務器錯誤遮罩層 hmr: true, // 類型: object // 傳遞給`chokidar`的文件系統監視器選項 // https://github.com/paulmillr/chokidar#api watch: {}, }, // 構建的配置 build: { // 類型: string // 默認: modules // 相關內容:https://cn.vitejs.dev/guide/build.html#%E6%B5%8F%E8%A7%88%E5%99%A8%E5%85%BC%E5%AE%B9%E6%80%A7 // 選項: https://esbuild.github.io/api/#target /* 設置最終構建的瀏覽器兼容目標。默認值是一個 Vite 特有的值,'modules',這是指 支持原生 ES 模塊的瀏覽器。 另一個特殊值是 “esnext” —— 即指執行 minify 轉換(作最小化壓縮)并假設有原生動態導入支持。 轉換過程將會由 esbuild 執行,并且此值應該是一個合法的 esbuild 目標選項。自定義目標也可以是一個 ES 版本(例如:es2015)、一個瀏覽器版本(例如:chrome58)或是多個目標組成的一個數組。 注意,如果代碼包含不能被 esbuild 安全地編譯的特性,那么構建將會失敗。查看 esbuild 文檔 獲取更多細節。 */ target: 'modules', // 類型: string // 默認: dist // 指定輸出路徑(相對于項目根目錄) outDir: 'dist', // 類型: string // 默認: assets // 指定生成靜態資源的存放路徑(相對于build.outDir) assetsDir: 'assets', // 類型: number // 默認: 4096(4kb) // 小于此閾值的導入或引用資源將內聯為 base64 編碼,以避免額外的 http 請求。設置為 0 可以完全禁用此項。 assetsInlineLimit: 4096, // 類型: boolean // 默認: true // 啟用/禁用 CSS 代碼拆分。當啟用時,在異步 chunk 中導入的 CSS 將內聯到異步 chunk 本身,并在塊加載時插入。 // 如果禁用,整個項目中的所有 CSS 將被提取到一個 CSS 文件中。 cssCodeSplit: true, // 類型: boolean // 默認: false // 構建后是否生成sourceMap文件 sourcemap: false, // 類型: RollupOptions // https://rollupjs.org/guide/en/#big-list-of-options // 自定義底層的 Rollup 打包配置。這與從 Rollup 配置文件導出的選項相同,并將與 Vite 的內部 Rollup 選項合并。查看 Rollup 選項文檔 獲取更多細節。 // https://rollupjs.org/guide/en/#big-list-of-options rollupOptions: {}, // 類型: RollupCommonJSOptions // https://github.com/rollup/plugins/tree/master/packages/commonjs#options // 傳遞給 @rollup/plugin-commonjs 插件的選項。 // https://github.com/rollup/plugins/tree/master/packages/commonjs commonjsOptions: {}, // 類型: { entry: string, name?: string, formats?: ('es' | 'cjs' | 'umd' | 'iife')[] } // 相關內容: https://cn.vitejs.dev/guide/build.html#%E5%BA%93%E6%A8%A1%E5%BC%8F //* 構建為庫。entry 是必須的因為庫不可以使用 HTML 作為入口。name 則是暴露的全局變量,并且在 formats 包含 'umd' 或 'iife' 時是必須的。默認 formats 是 ['es', 'umd']。 lib: { entry: '', }, // 類型: boolean // 默認: false // 相關內容: https://cn.vitejs.dev/guide/backend-integration.html // 當設置為 true,構建后將會生成 manifest.json 文件,映射沒有被 hash 的資源文件名和它們的 hash 版本。可以為一些服務器框架渲染時提供正確的資源引入鏈接。 manifest: false, // 類型: boolean | 'terser' | 'esbuild' // 默認: 'terser' // 設置為 false 可以禁用最小化混淆,或是用來指定使用哪種混淆器。默認為 Terser,雖然 Terser 相對較慢,但大多數情況下構建后的文件體積更小。ESbuild 最小化混淆更快但構建后的文件相對更大。 // https://github.com/terser/terser minify: 'terser', // 類型: TerserOptions // 傳遞給Terser的更多minify選項 // https://terser.org/docs/api-reference#minify-options terserOptions: {}, // 類型: boolean // 默認: true // 設置為 false 來禁用將構建后的文件寫入磁盤。這常用于 編程式地調用 build() 在寫入磁盤之前,需要對構建后的文件進行進一步處理。 // https://cn.vitejs.dev/guide/api-javascript.html#build write: true, // 類型: boolean // 默認: 若outDir在root目錄下,則為true // 默認情況下,若 outDir 在 root 目錄下,則 Vite 會在構建時清空該目錄。若 outDir 在根目錄之外則會拋出一個警告避免意外刪除掉重要的文件。可以設置該選項來關閉這個警告。該功能也可以通過命令行參數 --emptyOutDir 來使用。 emptyOutDir: true, // 類型: boolean // 默認: true // 啟用/禁用 brotli 壓縮大小報告。壓縮大型輸出文件可能會很慢,因此禁用該功能可能會提高大型項目的構建性能。 brotliSize: true, // 類型: number // 默認: 500 // chunk大小警告的限制,以kbs為單位 chunkSizeWarningLimit: 500, }, // 依賴優化 optimizeDeps: { // 入口 // 類型: string | string[] // 默認情況下,Vite 會抓取你的 index.html 來檢測需要預構建的依賴項。如果指定了 `build.rollupOptions.input`,Vite 將轉而去抓取這些入口點。 // 如果這兩者都不適合你的需要,則可以使用此選項指定自定義條目 - 該值需要遵循 fast-glob 模式 ,或者是相對于 vite 項目根的模式數組。這將覆蓋掉默認條目推斷。 // https://github.com/mrmlnc/fast-glob#basic-syntax entries: '', // 類型: string[] // 在預構建中強制排除的依賴項 exclude: [], // 類型: string[] // 默認情況下,不在 node_modules 中的,鏈接的包不會被預構建。使用此選項可強制預構建鏈接的包。 include: [], }, }) ````
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看