Skip to content
页面概要

初始化项目

create vite

一、请用 create vite 命令创建 vue 项目。

sh
 pnpm create vite

创建步骤输入:

  • 1、Project name: >> 输入项目名称
  • 2、选中 vue
  • 3、选中 TypeScript

二、项目生成完成,目录结构如下:

bash
├── .vscode                    # vscode编辑器配置目录
   └── extensions.json
├── public                     # 静态资源
   └── vite.svg
├── src                        # 源代码目录
   ├── assets                 # 静态资源
      └── vue.svg
   ├── components             # 组件目录
      └── HelloWorld.vue 
   ├── App.vue                # App 入口
   ├── main.ts                # 入口文件
   ├── style.css              # css
   └── vite-env.d.ts          # ts 配置
├── .gitignore                 # Git忽略文件配置
├── index.html                 # html模板
├── package.json               # 项目信息
├── README.md                  # readme
├── tsconfig.json              # ts 配置
├── tsconfig.node.json
└── vite.config.ts             # vite 配置

三、安装运行:

sh
pnpm install
pnpm run dev 

这样我们就基于vite创建了一个vue项目,并且运行了起来。

配置 EdiorConfig 统一内容风格

一、在项目根目录创建 .editorconfig 文件,内容如下:

sh
# @see: http://editorconfig.org
root = true

[*] # 表示所有文件适用
charset = utf-8 # 设置文件字符集为 utf-8
indent_style = tab # 缩进风格(tab | space)
indent_size = 2 # 缩进大小
max_line_length = 120 # 最大行长度
end_of_line = lf # 控制换行类型(lf | cr | crlf)
trim_trailing_whitespace = true # 开启末尾空格修剪
insert_final_newline = true # 始终在文件末尾插入一个新行

[*.md]
trim_trailing_whitespace = false # 关闭末尾空格修剪
max_line_length = off # 关闭最大行长度限制

二、修改 /.vscode/extensions.json 文件内容如下:

json
{
  "recommendations": [
		"Vue.volar",
		"vue.vscode-typescript-vue-plugin",
		"stylelint.vscode-stylelint",
		"dbaeumer.vscode-eslint",
		"editorconfig.editorconfig",
		"esbenp.prettier-vscode"
	]
}

扩展vite配置,ts、css 支持,打包优化

一、配置 .env 文件

  • 1、在项目根目录创建 .env 文件,内容如下:
sh
# port
VITE_APP_PORT = 3001

# open 运行 pnpm run dev 时自动打开浏览器
VITE_APP_OPEN = true

# 是否生成包预览文件
VITE_APP_REPORT = false

# 是否开启gzip压缩
VITE_APP_BUILD_GZIP = false
  • 2、在项目根目录创建 .env.development 文件,内容如下:
sh
# 本地环境
NODE_ENV = development
  • 3、在项目根目录创建 .env.production 文件,内容如下:
sh
# 线上环境
NODE_ENV = production
  • 4、在项目根目录创建 .env.test 文件,内容如下:
sh
# 测试环境
NODE_ENV = test

二、安装以下相关开发依赖

  • @types/node (node types)
  • sass (sass 支持)
  • less (less 支持)
  • vite-plugin-compression (gzip compress)
  • rollup-plugin-visualizer (是否生成包预览,分析依赖包大小,方便做优化)
sh
pnpm add @types/node sass less vite-plugin-compression rollup-plugin-visualizer -D

三、修改 tsconfig.json 内容如下:

json
{
  "compilerOptions": {
    "target": "ESNext",
    "useDefineForClassFields": true,
    "module": "ESNext",
    "moduleResolution": "Node",
    "strict": true,
    "jsx": "preserve",
    "sourceMap": true,
    "resolveJsonModule": true,
    "isolatedModules": true,
    "esModuleInterop": true,
    "lib": ["ESNext", "DOM"],
	"types": ["vite/client"],
	// 跳过库检查,解决打包失败
    "skipLibCheck": true,
	// 解析非相对模块名的基准目录
	"baseUrl": ".",
	// 模块名到基于 baseUrl的路径映射的列表。
    "paths": {
      "@/*": ["src/*"]
    }
  },
  "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"],
  "exclude": ["node_modules", "dist", "**/*.js"],
  "references": [{ "path": "./tsconfig.node.json" }]
}

四、修改 vite.config.ts 内容如下:

ts
import { resolve } from "path";
import { defineConfig, loadEnv, PluginOption } from 'vite';
import viteCompression from "vite-plugin-compression";
import { visualizer } from "rollup-plugin-visualizer";
import vue from '@vitejs/plugin-vue';

// @see: https://vitejs.dev/config/
export default defineConfig(({ command, mode }) => {
	const root = process.cwd();
	const env = loadEnv(mode, root);

	const {
		VITE_APP_PORT,
		VITE_APP_REPORT,
		VITE_APP_BUILD_GZIP,
		VITE_APP_OPEN,
	} = env;


	// vite 插件
	const vitePlugins: (PluginOption | PluginOption[])[] = [
		vue(),
	];

	// vite-plugin-compression gzip compress
	if (VITE_APP_BUILD_GZIP === "true") {
		vitePlugins.push(
			viteCompression({
				verbose: true,
				disable: false,
				threshold: 10240,
				algorithm: "gzip",
				ext: ".gz",
			}),
		);
	}

	// rollup-plugin-visualizer 是否生成包预览(分析依赖包大小,方便做优化处理)
	if (VITE_APP_REPORT === "true") {
		vitePlugins.push(visualizer());
	}

  return {
		root,
		server: {
			host: "0.0.0.0",
			port: Number(VITE_APP_PORT || 3001),
			open: VITE_APP_OPEN === "true",
			cors: true,
		},
		resolve: {
			alias: [
				{
					find: /^~/,
					replacement: `${resolve(__dirname, "./node_modules")}/`,
				},
				{
					find: /@\//,
					replacement: `${resolve(__dirname, "./src")}/`,
				},
			],
		},
		plugins: vitePlugins,
		css: {
			preprocessorOptions: {
				less: {
					javascriptEnabled: true,
				},
			},
		},
	};
});

五、 package.json 文件,scripts 中新增以下内容:

json
{
	"scripts": {
        "build": "vue-tsc --noEmit && vite build",
		"build:dev": "vue-tsc --noEmit && vite build --mode development",
		"build:test": "vue-tsc --noEmit && vite build --mode test",
	}
}

限制包管理工具为pnpm

一、安装以下相关开发依赖

  • only-allow (限制包管理工具)
sh
pnpm add only-allow -D

二、 package.json 文件,scripts 中新增以下内容:

json
{
	"scripts": {
       "preinstall": "only-allow pnpm"
	}
}

锁定项目 Node 版本

通过在 package.json 文件中指定 engines 字段,可限定项目使用的 node 版本。

json
{
	"engines": {
		"node": ">= 14.18.0"
	},
}

Released under the MIT License.