1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        【實戰(zhàn)】1377- 如何從 Vue CLI 遷移到 Vite

        共 7084字,需瀏覽 15分鐘

         ·

        2022-07-13 14:45

        ?譯自:https://vueschool.io/articles/vuejs-tutorials/how-to-migrate-from-vue-cli-to-vite/


        如果你在 2021 年之前使用 Vue 進行開發(fā),那么你選擇的構(gòu)建工具很有可能是Vue CLI。很長時間以來,它一直是 Vue.js 項目腳手架的標(biāo)準(zhǔn)實踐。不過現(xiàn)在,尤大的下一代構(gòu)建工具 Vite 已經(jīng)吸引了很多關(guān)注,它是Vue CLI 的一個很好的替代品。

        為什么要從 Vue CLI 遷移到 Vite?

        主要原因是速度。Vite的開發(fā)服務(wù)器速度很快。因為它對JavaScript模塊使用原生瀏覽器支持,所以服務(wù)器的啟動時間是即時的。同時這還意味著,無論程序大小如何,熱模塊更新都會很快,因為不必重建整個bundle。為了演示,下面一個使用Vue Cli和Vite創(chuàng)建完全相同的項目進行比較:

        1. 啟動時間:
        • Vue CLI-2591毫秒(超過2秒)
        • Vite-259ms(遠(yuǎn)低于半秒-快10倍)??
        1. 熱更新(HMR):
        • Vue CLI-171ms
        • Vite-基本上是即時的 記住,這只是一個搭建的簡單示例。隨著項目的增長,Vue CLI版本的速度會逐漸變慢,而Vite卻承諾無論項目大小,都能在相同的級別速度上運行。

        如何從Vue CLI遷移到Vite

        為了解決這個問題,本文使用Vue CLI構(gòu)建了一個全新的項目,將與您一起完成將其轉(zhuǎn)換為Vite的步驟。當(dāng)然,實際工作中通常不會從一個全新的Vue CLI項目開始,但很多步驟是通用的。此外,本文選擇Vue2作為演示,因為大多數(shù)人可能仍然在使用Vue 2。同時,本文也指出了Vue 3的不同之處(它比vue2遷移更簡單)。

        第1步:更新依賴項

        遷移到Vite的第一步是更新package.json中的依賴項。我們需要刪除與Vue CLI相關(guān)的依賴項。

        // package.json
        "@vue/cli-plugin-babel""~4.5.0"// remove
        "@vue/cli-plugin-eslint""~4.5.0"// remove
        "@vue/cli-plugin-router""~4.5.0"// remove
        "@vue/cli-plugin-vuex""~4.5.0"// remove
        "@vue/cli-service""~4.5.0"// remove

        我們還可以刪除sass-loader,因為Vite內(nèi)置支持常見的預(yù)處理器。我們也可以繼續(xù)使用自己選擇的CSS預(yù)處理器。但請注意,Vite建議將原生CSS變量與PostCSS插件一起使用,編寫簡單、符合未來標(biāo)準(zhǔn)的CSS。

        // package.json
        "sass-loader""^8.0.2" // remove

        最后,添加Vite作為依賴項,以及Vite的Vue插件組件,以支持單文件組件。

        // package.json
        "@vitejs/plugin-vue""^1.6.1",
        "vite""^2.5.4",

        此外,因為我們正在遷移Vue 2項目,我們還需要添加社區(qū)為Vue 2開發(fā)的Vite插件。如果我們使用Vue 3,就沒有必要這樣做。

        // package.json
        "vite-plugin-vue2" : "1.9.0" // add for Vue 2

        安裝了Vite插件后,我們現(xiàn)在還可以刪除vue模板編譯器,因為Vite vue插件有這個功能。

        // package.json
        "vue-template-compiler""^2.6.11" //remove (SFC support provided by vite vue plugin)

        第2步:僅支持現(xiàn)代瀏覽器

        既然Vite是下一代的構(gòu)建工具,所以我們可以只支持現(xiàn)代的瀏覽器。這將使我們的構(gòu)建盡可能精簡和快速。實際上,這意味著我們可以將Babel完全從依賴關(guān)系中移除,因為大多數(shù)移動和pc瀏覽器幾乎完全支持所有ES6功能。如果您仍然需要支持Internet Explorer 11等較舊的瀏覽器,Vite會為此提供一個官方插件。所以,要刪除Babel,首先我們要刪除 babel.config.js文件。接下來,前面我們已經(jīng)刪除了@vue/cli babel插件依賴項,我們還需要從package.json文件中刪除幾個其他與babel相關(guān)的依賴項。

        // package.json
        "babel-eslint""^10.1.0", // remove
        "core-js""^3.6.5", // remove

        因為已經(jīng)刪除了'babel eslint',我們還需要在.eslintrc文件中刪除的將其作為解析器的配置 。

        // .eslintrc
        // remove
        parserOptions: {
            parser: "babel-eslint",
        },

        最后,當(dāng)我們在.eslintrc我們需要將env從node更新為'es2021',因為我們只支持那些現(xiàn)代瀏覽器。

        // .eslintrc
        env: {
            node: true, // remove
            es2021: true,
        }

        這一操作還將更新eslint本身,以及eslint-plugin-vue插件,以支持es2021環(huán)境。

        $ npm install eslint@8 eslint-plugin-vue@8

        第3步:添加Vite配置

        在這一步中,讓我們?yōu)閂ue項目配置Vite。Vite通過項目根目錄中的vite.config.js文件進行配置。以下是使用npm init vite@latest命令創(chuàng)建的Vite項目默認(rèn)配置文件。

        // vite.config.js

        import { defineConfig } from 'vite'
        import vue from '@vitejs/plugin-vue'

        // https://vitejs.dev/config/
        export default defineConfig({
          plugins: [vue()]
        })

        讓我們再增加2個配置項。首先,我們將從 vite-plugin-vue2 導(dǎo)入Vue插件,而不是官方的vite-Vue插件。

        // vite.config.js
        import vue from '@vitejs/plugin-vue' // remove
        import { createVuePlugin as vue } from "vite-plugin-vue2";

        //...

        如果您使用的是Vue 3,當(dāng)然不必這樣做。
        其次,為了讓@別名像在Vue CLI中一樣工作,我們需要添加下面這個配置項。

        // vite.config.js
        //...
        const path = require("path");
        export default defineConfig({
          //...
          resolve: {
            alias: {
              "@": path.resolve(__dirname, "./src"),
            },
          },
        });

        第4步:移動index.html文件

        與Vue CLI不同,Vite會將index.html文件放置在項目的根目錄中,而不是public目錄中,因此需要移動它。在index.html我們需要做一些改變。
        首先,我們需要將<%= htmlWebpackPlugin.options.title %>占位符改為硬編碼值。

        // index.html

        <!--remove-->
        <title><%= htmlWebpackPlugin.options.title %></title> 
        <!--add-->
        <title>Hard Coded Title</title>

        //...
        <!--remove-->
        <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
        <!--add-->
        <strong>We're sorry but this app doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>

        我們還需要把“<%=BASE_URL%>”占位符改為絕對路徑。

        // index.html

        <!--remove-->
        <link rel="icon" href="<%= BASE_URL %>favicon.ico">
        <!--add-->
        <link rel="icon" href="/favicon.ico">

        最后也是最重要的一點,應(yīng)用程序不再是自動注入的,所以我們需要像這樣引入它:

        <script type="module" src="/src/main.js"></script>

        第5步:更新腳本命令

        回到package.json文件,我們需要將舊的vue-cli-service命令更改為特定于Vite的命令。

        // package.json
        "serve""vue-cli-service serve", // remove
        "build""vue-cli-service build", // remove
        "dev""vite",
        "build""vite build",
        "serve""vite preview",

        請注意,啟動開發(fā)服務(wù)器的命令不再是serve。Vite使用dev代替,serve命令用于在本地預(yù)覽應(yīng)用。此外,如果啟用了linting,則應(yīng)更新lint腳本以直接運行eslint。

        "lint""eslint --ext .js,.vue --ignore-path .gitignore --fix src"

        第6步:更新環(huán)境變量

        環(huán)境變量在Vite中的工作方式與在Vue CLI中的工作方式之間存在很多相同的地方。例如,你的.env命名約定可以保持不變。

        .env                # loaded in all cases
        .env.local          # loaded in all cases, ignored by git
        .env.[mode]         # only loaded in specified mode
        .env.[mode].local   # only loaded in specified mode, ignored by git

        但是,我們不能現(xiàn)在在process變量上的訪問環(huán)境變量。取而代之的是 import.meta.env中找。

        // router/index.js
        base: process.env.BASE_URL, //remove
        base: import.meta.env.BASE_URL,

        第7步:添加.vue擴展到SFC

        雖然我們新創(chuàng)建的Vue CLI項目已經(jīng)做到了這一點,但我敢打賭,您現(xiàn)有的應(yīng)用程序可能沒有做到這一點。因此,必須確保所有單文件組件的導(dǎo)入都以.vue結(jié)束。

        // Home.vue
        import HelloWorld from "@/components/HelloWorld.vue"; // .vue is required

        可以通過在vite.config.js文件中的resolve.extensions配置項添加.vue完成這項配置。

        // vite.config.js
        //...
        export default defineConfig({
          plugins: [vue()],
          resolve: {
            extensions: ['.mjs''.js''.ts''.jsx''.tsx''.json''.vue'],
            //...
          },
        });

        第8步:清理魔術(shù)注釋

        最后,我們可以刪除所有用于命名動態(tài)導(dǎo)入的魔術(shù)注釋,因為這些是webpack的專屬注釋,對vite而言沒有意義。

        // router/index.js
        import(
            /* webpackChunkName: "about" */  // remove
            "../views/About.vue"
        ),

        取而代之的是,Vite會根據(jù)原始的.vue文件自動命名。如:About.37a9fa9f.js。

        第9步:享受更快、更無縫的開發(fā)體驗

        完成上述步驟1-8后,應(yīng)用程序就可以使用Vite運行了!用npm run dev啟動開發(fā)服務(wù)器,看看Vite有多快。

        ?譯自:https://vueschool.io/articles/vuejs-tutorials/how-to-migrate-from-vue-cli-to-vite/

        瀏覽 41
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            全部裸体做爰大片免费看网站 | 韩国三伦理片免费 | 肏逼免费视频 | 中文字幕一区二区三区人妻电影 | 人人操人人摸人人色 | 丰满少妇一区二区三区四区六区七区8 | 亚洲AV无码乱码在线观看性色 | 粗大黑人巨精大战欧美成人视频 | 嫩BX区二区三区的区别 | 四虎网站 |