vite的依赖预构建

112 阅读2分钟

create vite 和 vite 的区别

在官网可以看到使用vite构建项目时推荐的命令有 yarn create vite 但是其实这个命令是安装了create-vite这个脚手架。

create-vite和vite的关系就类似于vue-cli和webpack的关系。

create-vite是脚手架,vite是构建工具。

vite的依赖预构建

先在本地文件夹创建一个index.html文件和一个main.js文件和一个count.js文件

index.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script src="./mian.js" type="module"></script>
</body>

</html>

main.js

import a from "./count"

console.log(a)

count.js


function a(){
    console.log("hello")
}
export default a 

在游览器打开html,在网络处发现count.js加载失败,原因是没有构建工具自动补充后缀

image.png

这里安装vite之后,会自动补充后缀,先按下不表,在终端中yarn init -y进行初始化,延后yarn add lodash-es

更改main.js如下

// import a from "./count"
// console.log(a)
import _ from "lodash-es"
console.log(_)

依旧报错,原因是esmodule无法去自动识别到node_modules

image.png

而且注意到此时的node_modules文件夹下lodash-es的位置

image.png

现在安装使用 yarn add vite来安装vite,然后通过vite启动项目,发现没有写后缀的count.js成功加载,没有完整路径的lodash-es也成功加载,而且lodas-es.js的路径是在.vite/deps下的

image.png

由此得到vite的依赖构建的所作的第一件事就是路径处理,并且对安装的第三方依赖进行了处理

image.png

我们在根目录下创建vite.config.js文件,写入以下内容


export default {
    optimizeDeps: {
        exclude:["lodash-es"]//对loadsh-es不进行依赖预构建
    }
}

loadsh-es依赖所依赖的全部js文件在网络请求中被加载,由此得知vite在依赖预构建时将该依赖所import的其他内容全部集成编写为了一个js文件(当依赖模块复杂时会编写为几个文件)。而且这种集成是无视esmodule和module.export的区别。

image.png