VUE3照本宣科——package.json与vite.config.js

VUE3照本宣科------package.json与vite.config.js


VUE3照本宣科系列导航

1.VUE3照本宣科------认识VUE3

2.VUE3照本宣科------应用实例API与setup

3.VUE3照本宣科------响应式与生命周期钩子

4.VUE3照本宣科------内置指令与自定义指令及插槽

5.VUE3照本宣科------路由与状态管理器

6.VUE3照本宣科------eslint与prettier

7.VUE3照本宣科------package.json与vite.config.js

前言

👨‍💻👨‍🌾📝记录学习成果,以便温故而知新

"VUE3照本宣科"是指照着中文官网菜鸟教程这两个"本"来学习一下VUE3。以前也学过VUE2,当时只在gitee留下一些代码,却没有记录学习的心得体会,有时也免不了会追忆一下。

以后出现"中文官网"不做特殊说明就是指:https://cn.vuejs.org/;菜鸟教程就是指:https://www.runoob.com/vue3/vue3-tutorial.html


一、package.json

写本专题时,上网搜了"package.json",一开始先入为主的以为是VUE的东西,上VUE的官网去找,结果没找到;然后觉得是node.js的东西,又上node官网去找,结果是"两处茫茫皆不见 "。偶然在网友的文章中看到是npm的东西,然后就找到了npm Docs,里面有关于package.json的介绍。

一来由于是纯英文的介绍,二来是因为内容比较多,所以就只挑zbxk项目中涉及的介绍一下。zbxk项目中package.json文件内容:

javascript 复制代码
{
  "name": "zbxk",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "preview": "vite preview",
    "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore",
    "format": "prettier --write src/"
  },
  "dependencies": {
    "pinia": "^2.1.6",
    "vue": "^3.3.4",
    "vue-router": "^4.2.4"
  },
  "devDependencies": {
    "@rushstack/eslint-patch": "^1.3.3",
    "@vitejs/plugin-vue": "^4.3.4",
    "@vue/eslint-config-prettier": "^8.0.0",
    "eslint": "^8.49.0",
    "eslint-plugin-vue": "^9.17.0",
    "prettier": "^3.0.3",
    "vite": "^4.4.9"
  }
}

1.name

文档上写得很啰嗦,可以认为是项目名称。

另外名称必须小于等于214字符,小写,不得以.或下划线开头,可以作为url的一部分。

2.version

项目版本。

3.private

如果是私有项目,不希望发布到公共 npm 仓库上,可以将 private 设为 true。

4.scripts

指定项目的一些内置脚本命令,这些命令可以通过 npm run 来执行。

在集成开发环境的"资源管理器"的"NPM脚本"会显示这些脚本命令,如下图:

5.dependencies

运行依赖,也就是项目生产环境下需要用到的依赖。

6.devDependencies

开发依赖,项目开发环境需要用到而运行时不需要的依赖,用于辅助开发,通常包括项目工程化工具比如 eslint、prettier与vite等。

其它配置项详情请参看npm Docs官网https://docs.npmjs.com/cli/v10/configuring-npm/package-json#scripts,这里就不啰嗦了。

二、vite.config.js

vite.config.js是vite构建工具的配置文件。Vite 官方中文文档地址https://cn.vitejs.dev/

zbxk项目中vite.config.js文件内容:

javascript 复制代码
import { fileURLToPath, URL } from 'node:url'

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

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  }
})

1.plugins

需要用到的插件数组。Falsy 虚值的插件将被忽略,插件数组将被扁平化(flatten)。

2.resolve.alias

当使用文件系统路径的别名时,请始终使用绝对路径。相对路径的别名值会原封不动地被使用,因此无法被正常解析。

以上是对zbxk项目使用到的配置项的说明。

3.base

开发或生产环境服务的公共基础路径,base的类型是string,默认值"/"。合法的值包括以下几种:

  • 绝对 URL 路径名,例如 /foo/
  • 完整的 URL,例如 https://foo.com/
  • 空字符串或 ./(用于嵌入形式的开发)

重点看一下对编译后index.html的影响。zbxk的默认vite.config.js配置生成的内容:

html 复制代码
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <link rel="icon" href="/favicon.ico">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vite App</title>
    <script type="module" crossorigin src="/assets/index-84d03148.js"></script>
    <link rel="stylesheet" href="/assets/index-499625e2.css">
  </head>
  <body>
    <div id="app"></div>
    
  </body>
</html>

vite.config.js加上:

javascript 复制代码
base: './',

后编译生成的内容:

html 复制代码
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <link rel="icon" href="./favicon.ico">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vite App</title>
    <script type="module" crossorigin src="./assets/index-9a6c1f67.js"></script>
    <link rel="stylesheet" href="./assets/index-499625e2.css">
  </head>
  <body>
    <div id="app"></div>
    
  </body>
</html>

可以看出引用资源的地方由"/"变成了"./"。

4.mode

类型是string,默认 'development' 用于开发,'production' 用于构建。

在配置中指明将会把 serve 和 build 时的模式 都 覆盖掉。也可以通过命令行 --mode 选项来重写。

这个配置暂时没有发现由什么明显作用,如果以后知道了再来完善。

其它配置就不一一罗列了。

三、VUE3照本宣科系列总结

大致用了7个专题对命令创建的Vue项目做了一个简要介绍,多数的内容是VUE3新特性,少数如内置指令是对以往学习知识的一个梳理。eslint、prettier及package.json是对以前没有在意的插件与配置等做一个浅层次的学习,vite.config.js是对新构建工具的学习。

相关推荐
I_Am_Me_3 分钟前
【JavaEE进阶】 JavaScript
开发语言·javascript·ecmascript
雯0609~10 分钟前
网页F12:缓存的使用(设值、取值、删除)
前端·缓存
重生之我是数学王子13 分钟前
QT基础 编码问题 定时器 事件 绘图事件 keyPressEvent QT5.12.3环境 C++实现
开发语言·c++·qt
℘团子এ13 分钟前
vue3中如何上传文件到腾讯云的桶(cosbrowser)
前端·javascript·腾讯云
Ai 编码助手15 分钟前
使用php和Xunsearch提升音乐网站的歌曲搜索效果
开发语言·php
学习前端的小z19 分钟前
【前端】深入理解 JavaScript 逻辑运算符的优先级与短路求值机制
开发语言·前端·javascript
神仙别闹26 分钟前
基于C#和Sql Server 2008实现的(WinForm)订单生成系统
开发语言·c#
XINGTECODE27 分钟前
海盗王集成网关和商城服务端功能golang版
开发语言·后端·golang
彭世瑜42 分钟前
ts: TypeScript跳过检查/忽略类型检查
前端·javascript·typescript
FØund40443 分钟前
antd form.setFieldsValue问题总结
前端·react.js·typescript·html