Vue3 パッケージング ビルドが webpack から vite に変更されました

序文

新しく作成した vue プロジェクトを作成し、webpack でパッケージ化します.vite パッケージに変更する場合は、変更内容を見てみましょう.具体的な操作内容は次のとおりです. (提出記録に収録、時間が長い、抜けがあるかもしれません)

パッケージ.json

  1. スクリプトを実行

webpack
"scripts": { "serve": "vue-cli-service serve", "build": "vue-cli-service build", "lint": "vue-cli-service lint" } vite "scripts": { "build": "vue-tsc --noEmit && vite build", "dev": "vite", "preview": "vite preview" }









  1. vite には多くの組み込みの依存関係があり、手動でダウンロードする必要がないため、開発の依存関係が大幅に削減されます。

webpack
"devDependencies": { "@typescript-eslint/eslint-plugin": "^5.4.0", "@typescript-eslint/parser": "^5.4.0", "@vue/cli-plugin-babel" : "~5.0.0", "@vue/cli-plugin-eslint": "~5.0.0", "@vue/cli-plugin-router": "~5.0.0", "@vue/cli- plugin-typescript」: 「~5.0.0」、「@vue/cli-service」: 「~5.0.0」、「@vue/eslint-config-typescript」: 「^9.1.0」、「babel-plugin」 -import”: “^1.13.5”, “eslint”: “^7.32.0”, “eslint-plugin-vue”: “^8.0.3”, “postcss-pxtorem”: “^6.0.0”, “sass”: “^1.32.7”, “sass-loader”: “^12.0.0”, “typescript”: “~4.5.5”, “unplugin-vue-components”: “^0.20.1”, 「unplugin-vue-define-options」: 「^0.6.2」

















}
vite
"devDependencies": { "@types/node": "^12.20.24", "@vitejs/plugin-vue": "^3.0.3", "rollup-plugin-copy": "^3.4.0 」、「typescript」:「^4.6.4」、「unplugin-vue-components」:「^0.22.4」、「vite」:「^3.0.7」、「vue-tsc」:「^0.39.5」 」}







  1. 完全版は以下の通り
{
    
    
  "name": "min-demo",
  "version": "0.0.1",
  "type": "module",
  "scripts": {
    
    
    "build": "vue-tsc --noEmit && vite build",
    "dev": "vite",
    "preview": "vite preview"
  },
  "dependencies": {
    
    
    "@tinymce/tinymce-vue": "^4.0.7",
    "amfe-flexible": "^2.2.1",
    "axios": "^0.27.2",
    "copy-webpack-plugin": "^11.0.0",
    "echarts": "^5.3.3",
    "element-plus": "^2.2.14",
    "min-comp": "^0.0.4",
    "mockjs": "^1.1.0",
    "particles.vue3": "^2.2.3",
    "pinia": "^2.0.20",
    "prismjs": "^1.28.0",
    "sass": "^1.54.5",
    "sass-loader": "^13.0.2",
    "three": "^0.143.0",
    "tsparticles": "^2.2.3",
    "vant": "^3.6.0",
    "vite-plugin-dts": "^1.4.1",
    "vite-plugin-md": "^0.20.2",
    "vue": "^3.2.37",
    "vue-router": "^4.1.3"
  },
  "devDependencies": {
    
    
    "@types/node": "^12.20.24",
    "@vitejs/plugin-vue": "^3.0.3",
    "rollup-plugin-copy": "^3.4.0",
    "typescript": "^4.6.4",
    "unplugin-vue-components": "^0.22.4",
    "vite": "^3.0.7",
    "vue-tsc": "^0.39.5"
  }
}

index.html

  1. index.html の場所を src と同じレベルに移動する必要があります
  2. main.ts を手動で導入する必要がある
    <script type="module" src="/src/main.ts"></script>
  3. BASE_URL は webpack の組み込みグローバル環境変数であるため、vite は使用できず、vite の環境変数属性は import.meta.env に格納されます。

vue.config.jsファイルを削除し、vite.config.ts を作成します。

//vite.config.ts
import {
    
     defineConfig } from "vite";
import vue from '@vitejs/plugin-vue';
import Components from 'unplugin-vue-components/vite';
import {
    
     VantResolver } from 'unplugin-vue-components/resolvers';
import path from 'path';

export default defineConfig({
    
    
    resolve: {
    
    
        alias: {
    
    
          "@": path.resolve(__dirname, "./src"),
        },
      },
      plugins: [
        vue(),
        Components({
    
    
          resolvers: [VantResolver()],
        }),
      ],
})

require は使用できません。require は webpack に付属しています。vite でファイルをインポートするには import を使用します。

//webpack
require("../mock");
//vite
import "../mock/index";

ファイルの一括インポート

//webpack
const files = require.context('.', true, /\.js$/);
//vite
const files = import.meta.glob("./*.js");

vite はファイルの動的読み込みをサポートしていません。解決策はコメントを追加することです

//webpack
component: () => import(`@/views/${
      
      folderUrl}/LayoutView.vue`)
//vite
component: () => import(/* @vite-ignore */`@/views/${
      
      folderUrl}/LayoutView.vue`)

vite-env.d.ts を追加

declare module '*.vue' {
    
    
  import type {
    
     DefineComponent } from 'vue'
  const component: DefineComponent<{
    
    }, {
    
    }, any>
  export default component
}

tsconfig.node.json を追加

{
    
    
  "compilerOptions": {
    
    
    "composite": true,
    "module": "ESNext",
    "moduleResolution": "Node",
    "allowSyntheticDefaultImports": true
  },
  "include": ["vite.config.ts"]
}

おすすめ

転載: blog.csdn.net/qq_41028148/article/details/127669290