2、项目初始化:从零搭建项目目录、配置package.json、初始化Git仓库

好,咱们正式开始动手了。

这一章,说白了就是给项目「安家」。很多新手上来就写代码,写到一半发现目录乱成一锅粥,依赖装得乱七八糟,版本也控制不住。我早期就吃过这个亏——一个项目做到后期,连自己都找不到对应的组件在哪个文件夹里。嗯,那感觉,真挺崩溃的。

所以,项目初始化这件事,别看它基础,其实决定了你后面能走多远。咱们一步步来。

2.1 项目目录结构设计

我个人习惯,在项目一开始就把目录架子搭好。不是说要一步到位,但至少骨架得清晰。你想想看,一个模板工程,核心是「复用」,目录结构如果不清晰,复用就是空谈。

下面是我常用的一个模板工程目录结构,你可以直接拿来用:

my-template-project/
├── src/                    # 源代码目录
│   ├── components/         # 公共组件
│   ├── layouts/            # 布局组件
│   ├── pages/              # 页面组件
│   ├── utils/              # 工具函数
│   ├── styles/             # 全局样式
│   └── assets/             # 静态资源(图片、字体等)
├── public/                 # 公共资源(不经过打包的)
├── config/                 # 项目配置文件
├── scripts/                # 构建脚本
├── tests/                  # 测试文件
├── docs/                   # 项目文档
├── .gitignore              # Git 忽略规则
├── .eslintrc.js            # ESLint 配置
├── .prettierrc             # Prettier 配置
├── package.json            # 项目依赖与脚本
├── README.md               # 项目说明
└── LICENSE                 # 开源协议

这里有个小细节:src 目录下我习惯按功能模块分,而不是按文件类型分。比如 components 放组件,utils 放工具函数。这样后期找东西特别快。

小提示: 如果你做的是大型项目,可以在 components 下再按业务模块划分子目录,比如 components/UserCard、components/OrderList。这样复用性更高。

2.2 配置 package.json

package.json 是项目的「身份证」。它记录了项目名称、版本、依赖、脚本等信息。我见过有人直接复制别人的 package.json 过来用,结果版本冲突搞了一整天。嗯,这里要注意,每个项目都应该有自己的 package.json。

下面是一个典型的 package.json 示例:

{
  "name": "my-template-project",
  "version": "1.0.0",
  "description": "一个可复用的模板工程",
  "main": "src/index.js",
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "lint": "eslint src --fix",
    "test": "jest"
  },
  "dependencies": {
    "vue": "^3.4.0",
    "vue-router": "^4.3.0"
  },
  "devDependencies": {
    "vite": "^5.0.0",
    "eslint": "^8.56.0",
    "jest": "^29.7.0"
  },
  "keywords": ["template", "vue", "vite"],
  "author": "Your Name",
  "license": "MIT"
}

这里有几个关键字段,我重点说一下:

字段 作用 注意事项
name 项目名称,用于 npm 发布 必须唯一,不能有大写字母
version 版本号,遵循 semver 规范 每次发布前记得更新
scripts 自定义命令,简化操作 命名要语义化,比如 dev/build/test
dependencies 运行时依赖 只放项目运行必需的包
devDependencies 开发时依赖 构建工具、测试框架放这里
避坑指南: 我曾经把 eslint 和 jest 放到了 dependencies 里,结果生产环境打包时体积大了不少。记住,只有运行时需要的才放 dependencies,其他的统统放 devDependencies。

2.3 初始化 Git 仓库

Git 是版本控制的基石。没有 Git 的项目,就像没有备份的硬盘——随时可能翻车。我建议从一开始就初始化 Git 仓库,哪怕你只是一个人开发。

操作很简单,就几步:

  1. 在项目根目录打开终端
  2. 执行 git init
  3. 创建 .gitignore 文件
  4. 执行 git add . 和 git commit -m "init: 项目初始化"

这里重点说一下 .gitignore。它告诉 Git 哪些文件不需要跟踪。比如 node_modules、dist、.env 这些,都不应该提交到仓库里。

一个标准的 .gitignore 示例:

# 依赖目录
node_modules/

# 构建输出
dist/
build/

# 环境变量
.env
.env.local

# IDE 配置
.vscode/
.idea/

# 系统文件
.DS_Store
Thumbs.db

# 日志
*.log
小技巧: 你可以去 GitHub 上搜 gitignore 模板,针对不同语言和框架都有现成的。我一般会先下载一个通用的,再根据项目需求微调。

2.4 初始化流程总结

好了,咱们把整个初始化流程串起来。说白了就是三步走:

  • 第一步: 创建目录结构,把骨架搭好
  • 第二步: 配置 package.json,明确依赖和脚本
  • 第三步: 初始化 Git 仓库,做好版本控制

这三步做完,你的项目就有了一个稳固的起点。后面不管怎么扩展,都不会乱。

我记得有一次接手一个老项目,目录结构乱七八糟,依赖也全是过时的。我花了整整两天才理清楚。从那以后,我每个项目都严格按照这套流程来初始化。你想想看,如果一开始就规范,后面能省多少事?

核心要点: 项目初始化不是走过场,它是整个工程的基石。目录结构清晰、依赖管理规范、版本控制到位,这三个做好了,你的模板工程就成功了一半。

下一章,咱们会深入配置开发环境,包括 ESLint、Prettier、Vite 这些工具。到时候你会发现,基础打好了,后面的配置就是水到渠成的事。