npm create vite 是如何实现的
文章类型:Vue
发布者:admin
发布时间:2023-06-28
创建一个vite项目,不需要全局安装脚手架,只需要一个命令npm create vite,就可以实现,那怎么实现的呢
✔ Project name: … vite-project
✔ Select a framework: › Vue
✔ Select a variant: › TypeScript
Scaffolding project in vite-project...
Done. Now run:
cd vite-project
npm install
npm run dev
npm init foo --> npm exec create-foo
npm init @user/foo --> npm exec @user/create-foo
意味着,执行了 npm init vite 命令,它会在本地寻找或者去远程下载一个名为 create-vite 的 npm 包,exec 命令会从其 package.json 文件中寻找 bin 字段,执行对应的二进制或者 js 文件
create-vite
├─dist
| └index.mjs
├─template-vue-ts
├─template-vue
├─template-vanilla-ts
├─template-vanilla
├─template-svelte-ts
├─template-svelte
├─template-react-ts
├─template-react
├─template-preact-ts
├─template-preact
├─template-lit-ts
├─template-lit
├─index.js
├─package.json
|...
A:首先进行 npm create vite===npm init vite
B:然后本地寻找或者去远程下载create-vite这个包
C:然后执行对应的文件
A、获取终端可选参数:项目名称、模板名称
B、使用 prompts 工具创建问卷,包含多个题目和单选分支,轻量级的创建终端问卷的工具,支持文本、数字、密码、单选、多选等多种类型的题目
C、根据问卷结果,匹配对应的模板文件夹
D、拷贝模板到本地仓库,进行重置项目名称等后处理操作
1:prompts ,一个轻量级的创建终端问卷的工具,支持文本、数字、密码、单选、多选等多种类型的题目
{
type: 'select',
name: 'framework',
message: '请选择一个框架',
choices: [
{
title: 'React',
description: 'The library for web and native user interfaces',
value: 'react'
},
{
title: 'Vue',
description: '渐进式 JavaScript 框架',
value: 'vue'
}
],
initial: 1
}
2: kolorist,给终端加点颜色
const red = (str) => {
const open = '\x1b[31m'
const close = '\x1b[0m'
return open + str + close
}
console.log(red('这里是红色的字体'))
3: unbuild 构建项目,一个基于 Rollup 的构建工具,配置简单,默认支持ts,构建速度快,内置了一个基于 esbuild 的轻量级的 file-to-file 工具 mkdist,能够在保持目录结构的情况下快速迁移文件夹
// create-vite/build.config.ts
export default {
entries: ['src/index'], // 入口文件
clean: true,
// 支持 Rollup 相关配置
rollup: {
inlineDependencies: true,
esbuild: {
minify: true,
},
}
}