首页 > 其他分享 >一、nextjs如何使项目工程化(c-shopping电商开源)

一、nextjs如何使项目工程化(c-shopping电商开源)

时间:2024-01-18 14:34:00浏览次数:24  
标签:npm shopping -- lint prettier husky 工程化 电商 ESLint

欢迎来到本系列文章,这些内容都是从我的开源项目 C-Shopping 衍生而来的。在这个系列中,我们将深入探讨 Next.js 和其他技术的各个方面,分享我在开发 C-Shopping 时积累的见解和最佳实践。如果你发现这些文章有帮助,请考虑在 GitHub 上为项目点亮一颗星星。你的支持对我来说意义重大,也会激励我进行更多的开发!

项目在线演示地址:

项目传送门:https://github.com/huanghanzhilian/c-shopping

本篇文章围绕C-Shopping 电商项目的代码实战,研究如何整合 ESLint、Prettier、Husky、Lint-staged 和 Commitlint 等工程化利器,提高代码质量和开发效率。


ESLint —— 代码质量的守护神(工具层)

什么是 ESLint?

ESLint 是一款强大的静态代码分析工具,有助于发现和修复代码中的问题,并确保整个团队遵循一致的代码规范。

如何整合 ESLint 到你的 C-Shopping 项目?

nextjs 已经提供了一个开箱即用的集成ESLint体验。将next lint作为脚本添加到package.json中

提提供了两种使用模式:
Strict:严格模式(本项目中使用);
Base:基础模式。

在nextjs项目中创建.eslintrc.json

  • 安装 ESLint 及相关依赖

    npm install --save-dev eslint eslint-config-next
    
  • 配置 .eslintrc 文件

    {
      "extends": "next/core-web-vitals"
    }
    
  • ESLint 检查

    npm run lint
    

如果你的编辑器是vscode,可以配合ESLint插件一起使用


Prettier —— 代码格式化的魔法师(工具层)

什么是 Prettier?

Prettier 是一款自动化代码格式化工具,可以确保整个 C-Shopping 项目的代码风格保持一致,让你的代码更美观。

与 ESLint 的完美协同

  • 安装
    npm install prettier eslint-plugin-prettier eslint-config-prettier --save-dev
    
  • 更新.eslintrc.js文件
    {
      "extends": [
    	"next/core-web-vitals",
    	"plugin:prettier/recommended",
    	"prettier" // Add "prettier" last. This will turn off eslint rules conflicting with prettier. This is not what will format our code.
      ]
    }
    
  • 添加 NPM 脚本并使用
    "scripts": {
    	"format": "prettier --write './**/*.+(js|ts|jsx|tsx)'"
    },
    
    npm run format
    

如果你的编辑器是vscode,可以配合ESLint插件和prettier插件一起使用

vscode编辑器,如果想保存执行eslint,prettier

在根目录新建.vscode文件夹,新建settings.json文件

{
    "editor.codeActionsOnSave": {
        "source.fixAll.eslint": true
    }
}

在vscode,安装eslintprettier两插件,保存项目代码就会执行eslintprettier配置

个性化 Prettier 配置

我们将详细讨论如何根据 C-Shopping 项目的需求调整 Prettier 的配置,让格式化符合你团队的规范。


Husky —— Git Hooks 的得力助手(流程层)

什么是 Husky?

husky是一个git hook工具,用于你在提交代码的时候进行自定义的操作。

在 C-Shopping 项目中使用 Husky

在 C-Shopping 项目中集成 Husky,让其在关键的 Git Hooks 上执行我们指定的任务,确保代码提交符合标准。

  • 在git commit 之前执行自定义命令,检查代码

    npm install husky --save-dev
    npm pkg set scripts.prepare="husky install"
    npm run prepare
    
    npx husky add .husky/pre-commit "npm run lint"
    npx husky add .husky/pre-commit "npm run format"
    npx husky add .husky/pre-commit "git add ."
    
  • commit lint 代码提交时,限制代码提交规范
    限制代码提交规范https://github.com/conventional-changelog/commitlint
    安装

    # Install commitlint cli and conventional config
    npm install --save-dev @commitlint/{config-conventional,cli}
    # For Windows:
    npm install --save-dev @commitlint/config-conventional @commitlint/cli
    
    # Configure commitlint to use conventional config
    echo "module.exports = {extends: ['@commitlint/config-conventional']}" > commitlint.config.js
    

    Add hook

    npx husky add .husky/commit-msg  'npx --no -- commitlint --edit ${1}'
    

    如果提交不安装规范来会报错

    继小鹏


Lint-staged —— 精准 Linting,高效开发(流程层)

什么是 Lint-staged?

lint-staged 是一个工具,可以在 Git 暂存区的文件上运行指定的 lint 工具,以便于仅在需要时执行 lint 检查。它通常与 Husky 配合使用,以在提交代码前运行 lint-staged。使用 lint-staged 可以大大提高 lint 检查的效率,因为只需要针对本次提交的文件执行 lint 检查,而不是所有的文件。

在 C-Shopping 项目中应用 Lint-staged

在根目录新建.lintstagedrc.js

module.exports = {
  // Lint then format TypeScript and JavaScript files
  '/**/*.(ts|tsx|js)': filenames => [
    `eslint --fix ${filenames.join(' ')}`,
    `prettier --write ${filenames.join(' ')}`,
  ],

  // Format MarkDown and JSON
  '/**/*.(md|json)': filenames => `prettier --write ${filenames.join(' ')}`,
}

修改pre-commit文件

#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

# npm run lint
# npm run format
npx lint-staged

git add .


结语

通过这一系列的实战指南,你将全面掌握如何运用 ESLint、Prettier、Husky、Lint-staged 和 Commitlint 等工程化工具,打造一个更出色的项目!

最后

希望你在本文中找到了对你的项目实用的见解。如果你对 C-Shoppinghttps://github.com/your-username/C-Shopping 及其相关技术感兴趣,欢迎在 GitHub 上查看项目。如果你喜欢这些内容并期望看到更多类似的文章,请别忘了给仓库点亮一颗星星。

标签:npm,shopping,--,lint,prettier,husky,工程化,电商,ESLint
From: https://www.cnblogs.com/huanghanzhilian/p/17972442

相关文章

  • 电商通讯服务
    跨境通讯做跨境通讯的企业一般是可以提供通话话机和呼叫中心软件服务,不仅能接听还能外呼,同时我们提供的服务呼出和接听都为国际当地的号码。通过建立私有网络和全球分布的服务器节点,解决企业原有线路通话质量差、不稳定的问题,提供高质量、安全可靠的语音通信服务,帮助企业在全球范......
  • 开发跨境电商辅助工具,你需要用到这些代码!
    随着跨境电商的日益繁荣,越来越多的开发人员投入到这一领域,开发出各种辅助工具来提高跨境交易的效率和用户体验,本文将为你介绍在开发跨境电商辅助工具时,你需要用到的关键代码。支付接口集成在跨境电商中,支付是最核心的环节之一,为了方便用户完成支付,你需要集成的支付接口,以下是几种常......
  • 【专题】2023中国电商营销趋势及增长策略研究报告PDF合集分享(附原数据表)
    全球电商市场在疫情后持续发展,其中,中国市场占据了半壁江山,对全球电商格局产生了重大影响。在中国,三至五线城市的城镇人口众多,约占总城镇人口的65%。随着移动互联网的普及,这些城市构成了纵深市场,其用户规模正在稳步增长。据数据显示,近7.2亿的目标用户占据了整个市场的52%,成为移动互......
  • 跨境电商CRM系统七大功能解析——如何解决业务痛点?
    跨境电商企业日常工作中需要用到很多应用例如建独立站、邮件营销、财务管理,其中CRM系统更是客户管理的核心。无论是获客、管理客户资料、维护客户关系、数据分析都要在应用上完成。今天我们就来说一说跨境电商CRM系统有哪些功能?1.AI人工智能助手、2.销售自动化、3.数据安全性、4......
  • shopping
    thissweaterismadefromcompletelynaturalmaterials.what'swrongwiththiszipper?itwon'tgoup.he'sbeenbuyingalotofshoeslately.youshouldn'tbringpetsintothestore.youunderwearismadefromsuchlowqualitymateria......
  • fastlio工程化工作
    fastliofastlio2pointlio都是港大开源的很好的工作其中fastlio2是对fastlio的升级 没有使用特征提取使用gicp方式做点到面的约束pointlio没有使用迭代卡尔曼滤波方式进行优化也没有做针对scan的运动补偿而是针对scan中的每一个点的时间都做了观测。针对激光建图来说fas......
  • JavaScript采集各大电商平台关于预制菜酸菜鱼销售量
    因为我喜欢吃酸菜鱼,但是自己弄又弄不来,想从网上找找看看,但是种类多,自己逐个选择又太浪费时间。索性利用自己专业爬虫知识,一边检验我最近代码水平,另一方面还能选择到满意的年货。过去写个各大平台预制菜酸菜鱼销量的爬虫代码,自动化分析各大平台消费情况,选择最畅销的,准备年货。首先,我......
  • 从工程化角度,详解鹏程・脑海大模型训练过程
    我们有幸邀请到了鹏城实验室高效能云计算所算法工程师陶恒韬老师来进行鹏城。脑海大模型训练过程的讲解。在课程中,陶老师从工程化的角度,对鹏城。脑海大模型训练语料处理、模型训练优化、模型应用等方面做出了全面详细的经验分享。鹏城。脑海大模型介绍鹏城・脑海(PengChengMind)大模......
  • 智能电商运营:亚马逊鲲鹏系统带你实现自动注册、养号、下单和留评
    亚马逊鲲鹏系统是一款功能强大的全自动化操作软件,为亚马逊买家提供了一系列高效而智能的服务,让用户能够轻松管理大量买家号,实现自动注册、智能养号、批量下单和留评等操作。以下是该系统的主要特点:1、全自动批量注册买家号亚马逊鲲鹏系统支持使用手机号或邮箱进行注册,并能够模拟真......
  • 【专题】2023中国电商营销趋势及增长策略研究报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=34782原文出处:拓端数据部落公众号全球电商市场在疫情后持续发展,其中,中国市场占据了半壁江山,对全球电商格局产生了重大影响。阅读原文,获取专题报告合集全文,解锁文末213份电商营销相关行业研究报告。在中国,三至五线城市的城镇人口众多,约占总城镇人......