项目搭建与环境配置

项目搭建与环境配置:

使用 pnpm 包管理工具,搭建一个初步基于vite的react+typescript+sass+antd的项目。

本文目录如下:

[TOC]

一、vite安装及配置

终端输入命令行,根据提示选择安装react+ts的项目

pnpm create vite my-app-name --template react-ts

进入package.json 文件内,可以看到script内的配置

 "scripts": {
    "dev": "vite",
    "build": "tsc && vite build",}
//输入 pnpm run dev启动项目
//输入 pnpm run bulid 打包项目

接着继续配置项目目录中的 vite.config.ts 文件,具体配置参考:vite中文配置官方文档

根据项目要求配置如下:

export default defineConfig({
  plugins: [
    react(),//react()配置后不需要每页再引入react,且具备热更新
    vitePluginImp({//按需引入 Antd 的样式和组件
      libList: [
        {
          libName: 'antd',
          style: (name) => `antd/es/${name}/style`,
        }
      ]
    })
  ],
  resolve: {
    alias:{
        '@': path.resolve(__dirname, './src') //设置路径别名,需要引用/src下面的文件时只需要在前面添加@即可
    },
    extensions: ['.js', '.ts', '.json'] // 导入时想要省略的扩展名列表
  },
  css: {
      preprocessorOptions: {
        scss: {//引入项目自定义变量
          additionalData: `@import "./src/style/_variables.scss";`
        }
      }
    },
    esbuild: {//打包的时候去除掉调试的代码
      drop: ["console", "debugger"],
    },
  server: {
    port:3022,//启动端口
  }
  
})

二、tsconfig配置及报错解决方案

打开tsconfig.config.json和tsconfig.node.json会发现报错:

 "moduleResolution": "bundler" 
//——解决方案:将bundler改为node即可
 "moduleResolution": "node"

注意要将报错的地方都修改,其他配置根据自己需要参考tsconfig配置即可。

这里列举几个常用的config:

"useDefineForClassFields": true
  1. useDefineForClassFields: 开启此选项后,TypeScript 编译器会将类中的属性声明为 JavaScript 中的 Object.defineProperty,而不是将它们赋值给 this。这可用于更好地控制类属性的访问级别和可枚举性。
    "noFallthroughCasesInSwitch": true,
  1. forceConsistentCasingInFileNames: 开启此选项后,TypeScript 编译器将在编译时检查文件名的大小写是否一致,并给出警告。

三、安装husky\prettier\lint-staged

(一)husky安装及配置commit message规范

参考了官方文档Getting started | ? husky (typicode.github.io),推荐两种方案,我这里采取了第一种自动化方案,在终端中输入以下命令行:

pnpm dlx husky-init 
pnpm install

这种方案会在我们的package.json中script调式中添加”prepare”: “husky install”,并生成pre-commit文件(在pre-commit文件,会在代码提交之前运行,这里我当时没配置好,也是导致我后续报错的原因,想知道为什么的话,就继续看下去吧)

在提交代码时,要根据规定的commit规范提交

  • feat: 新功能、新特性
  • fix: 修改 bug
  • perf: 更改代码,性能优化
  • refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修改)
  • docs: 文档修改
  • style: 代码格式修改, 注意不是 css 修改(例如分号修改)
  • test: 测试用例新增、修改
  • build: 影响项目构建或依赖项修改
  • revert: 恢复上一次提交
  • ci: 持续集成相关文件修改
  • chore: 其他修改(不在上述类型中的修改)
  • release: 发布新版本
  • workflow: 工作流相关文件修改

(二)prettier安装

根据文档Install · Prettier操作,通过命令行安装

pnpm install --save-dev --save-exact prettier

在项目根目录新建一个.prettierrc.json文件,里面的内容为美化代码的规则,如这里设置的

{
  // 不使用分号结尾
  "semi": false,
  // 使用两个空格作为一个缩进级别
  "tabWidth": 2,
  // 使用单引号而不是双引号
  "singleQuote": true,
  // 行宽限制为 80 个字符,超出则换行
  "printWidth": 80,
  // 不使用尾随逗号
  "trailingComma": "none"
}

接着在eslintrc.json的文件中添加(防止eslint和prettier冲突)

...,
"extends": [
  ...,
  "prettier"
],
...,

(三)lint-staged安装

根据文档lint-staged – npm (npmjs.com)通过命令行安装:

pnpm install --save-dev lint-staged

接着在package.json中配置

"lint-staged": {
		"*.{js,jsx,ts,tsx}": [
			"prettier --write"
		],
		"*.{md,json}": [
			"prettier --write --no-error-on-unmatched-pattern"
		]
	}

在调试script中配置,或根据

"scripts": {

	...
		"lint-staged": "lint-staged"

    ...
	}


(在pre-commit中添加 npm run lint-staged)

bug:解决方案、反思

在提交commit的时候出现

> git -c user.useConfigOnly=true commit --quiet --allow-empty-message --file -
Unknown command: "lint-staged"




Did you mean this?
    npm run lint-staged # run the "lint-staged" package script


To see a list of supported npm commands, run:
  npm help
husky - pre-commit hook exited with code 1 (error)

出现这个错误是因为我在package.json中配置了”lint-staged”: “lint-staged”

"scripts": {

		...
		"lint-staged": "lint-staged"

	},

但是并没有修改pre-commit中的内容,它仍然是

#!/usr/bin/env sh


. "$(dirname -- "$0")/_/husky.sh"






npm lint-staged
解决方案1

修改pre-commit中的内容,在npm后面加上run

#!/usr/bin/env sh


. "$(dirname -- "$0")/_/husky.sh"






npm run lint-staged
解决方案2

删除script中配置的”lint-staged”: “lint-staged”,在pre-commit中配置

#!/usr/bin/env sh


. "$(dirname -- "$0")/_/husky.sh"






npx --no-install lint-staged --concurrent false

npx --no-install lint-staged --concurrent false 这一行使用 npx 命令来运行 lint-staged。lint-staged 是一个工具,它可以在 Git commit 之前检查暂存区中的文件,以确保它们符合代码风格和规范。--no-install 参数告诉 npx 不要在本地安装 lint-staged,而是从 npm registry 中动态获取。--concurrent false 参数告诉 lint-staged 不要并发执行检查,而是按顺序一个一个执行。

反思

出现bug后要仔细阅读报错信息

-注意报错文件,可以帮助我们及时定位到错误文件:husky – pre-commit

-注意报错信息,引导我们可以从哪方面修改:Did you mean this?
npm run lint-staged # run the “lint-staged” package script

© 版权声明
THE END
喜欢就支持一下吧
点赞0

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYyohFdY' (Errcode: 28 - No space left on device) in /www/wwwroot/583.cn/wp-includes/class-wpdb.php on line 2345
admin的头像-五八三
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

图形验证码
取消
昵称代码图片