我们创建了一个现代的Web应用程序。 熟悉项目并做好工作准备。 第一部分

图片
在本系列文章中,我们将经历创建应用程序客户端部分的整个过程,并使用现代技术堆栈编写一个小的组件库。
我写这篇文章的目的是为希望创建第一个JavaScript项目并将其展示给全世界的前端开发人员;在本系列文章中,我选择了大多数现代项目中都可以找到的基本堆栈。 为了不感到厌烦,您可以随时添加自己的东西,因此我建议您编写自己的实现,并在阅读本文时在GitHub上发布工作结果。 当然,您有十二种想要尝试的技术,库,框架,工具,开发这样一个宠物项目是尝试新事物的绝佳选择。

熟悉项目


我们将要实现的项目的主要思想是使用TypeScript编写React组件库,使用Storybook对其进行文档化和可视化,然后将其作为软件包发布在npm中。 我们还将配置短毛猫,为Jest添加测试,并使用Travis CI自动执行测试过程。 也许在工作期间会添加其他内容,请不要犹豫发表评论并提出解决方案。

本文将分为几个部分,以便我们可以详细检查项目的每个阶段。

开始使用


首先,我们需要在GitHub上为我们的项目创建一个存储库:



这是用于创建新存储库的窗口的外观。 您需要提供存储库的名称和简短描述。 对于我所有的宠物项目,我总是选择存储库的公共类型,但是现在,如果您的团队不超过三个人,则GitHub提供了免费创建私有存储库的机会。 我还立即添加了MIT许可证-这是开放源代码项目的许可证的最简单,最通用的版本,如果您想了解有关许可证的更多信息,可以看到GitHub创建的此站点

现在克隆新的存储库。 GitHub建议使用SSH或HTTPS进行克隆。 我通常使用第二种方法。

git clone https://github.com/Alexandrshy/react-ant.git 

如果看到有关成功拆包的消息,则说明克隆成功。

我们还需要立即缓存密码,如果下次尝试进行git push,git fetch,git clone时不这样做,则需要输入用户名和密码(有关更多信息 )。

 git config --global credential.helper osxkeychain 

让我们继续创建package.json文件。 为此,运行命令:

 npm init -y 

在存储库中运行命令之后,您可以看到带有一些填充字段的package.json文件,我的看起来像这样:

 { "name": "react-ant", "version": "1.0.0", "description": "A set of light React components ", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "repository": { "type": "git", "url": "git+https://github.com/Alexandrshy/react-ant.git" }, "keywords": [], "author": "", "license": "ISC", "bugs": { "url": "https://github.com/Alexandrshy/react-ant/issues" }, "homepage": "https://github.com/Alexandrshy/react-ant#readme" } 

我们将立即进行一些小的更改:

  "keywords": [ "react", "css", "UI" ], "author": { "name": "Alex", "email": "alexandrshy@gmail.com", "url": "https://github.com/Alexandrshy" }, "license": "MIT", 


我认为这里一切都清楚了,但是对于更详细的配置,您可能需要此文档

在处理项目时,我们将返回package.json配置。 但是现在是时候进行第一次提交了。

 git status git add package.json git commit -m "Init npm package" git push 

简而言之,我们做了什么:检查更改历史记录,为修改后的package.json编制索引,使用简单明了的提交消息进行提交,然后将更改放入远程存储库。 现在package.json和有关新提交的信息已出现在我们的存储库中。 您可以使用IDE或GUI来与Git一起使用,但是我更愿意在控制台中进行所有操作。

林特


为了使您的代码更整洁(如果有多个人在项目上工作,这一点尤其重要),您肯定需要一种工具来分析和识别错误。 在我的项目中,我使用ESLint测试JavaScript代码。 它易于安装且高度可定制。

安装ESLint:

 npm i -D eslint 

设置配置文件:

 ./node_modules/.bin/eslint --init 

您可以手动配置ESLint或使用预定义的规则集。 我喜欢Airbnb的指南。 我使用了以下设置:

 ? How would you like to use ESLint? To check syntax, find problems, and enforce code style ? What type of modules does your project use? JavaScript modules (import/export) ? Which framework does your project use? React ? Does your project use TypeScript? Yes ? Where does your code run? Browser ? How would you like to define a style for your project? Use a popular style guide ? Which style guide do you want to follow? Airbnb (https://github.com/airbnb/javascript) ? What format do you want your config file to be in? JavaScript 

由于我们计划使用TypeScript,因此我立即在对话框中选择了此项目,由于出现了Cannot find module'typescript'错误,这是合理的,因为我们尚未安装TypeScript,让我们立即修复此问题:

 npm i typescript npm i -D @typescript-eslint/parser 

安装后,您将看到eslintrc配置文件。 它已经配置好了,但是如果在开发过程中要添加或更改一些规则,它将对您有所帮助。

为了测试ESLint,让我们创建一个index.ts文件并在其中保存以下代码:

 var a console .log('a = ' + a) a = 100 

并运行检查:

 ./node_modules/.bin/eslint index.ts 

很好,一个5行代码有7个错误和1个警告。 ESLint立即为我提供了自动修复这些错误的方法,让我们尝试这样做:

 ./node_modules/.bin/eslint index.ts --fix 

并且我们得到了这段代码,没有错误,并且有一个关于使用console.log的警告:

 var a; console .log(`a = ${a}`); a = 100; 

如您所见,自动修复有效,错误已得到修复,但是代码看起来仍然很难看。 对于格式化代码,我认为最好的工具是Prettier 。 让我们将其添加到我们的项目中:

 npm i -D prettier-eslint npm i -D prettier-eslint-cli 

 "scripts": { "format": "prettier-eslint '**/*.{js,ts,tsx}' --write" }, 

我添加了--write选项,以便覆盖所有格式化的文件。 检查结果:

 npm run format 

索引

 let a; console.log(`a = ${a}`); a = 100; 

一切正常。 您也可以为IDE安装插件,以使用键盘快捷键或保存更改来格式化文件。 现在,将脚本添加到package.json中:

 "scripts": { "eslint": "./node_modules/.bin/eslint '**/*.{js,ts,tsx}'", "eslint:fix": "npm run eslint -- --fix", "format": "prettier-eslint '**/*.{js,ts,tsx}' --write" }, 

启动新项目时的理想选择是立即配置所有的linter,因为如果您尝试在已经完成的项目中实施它们,则可能会看到大量错误,并且与最初照顾代码质量相比,需要花费更长的时间来修复它们。

保存更改:

 git add . git commit -m "Added ESLint and Prettier" git push 

预提交钩


我们配置了ESLint和Prettier并创建了手动运行的脚本,但是最好在提交之前自动执行此操作。 为此,我们可以使用Git钩子。 Husky包允许您在执行`git commit`之前运行脚本,而Lint-staged包允许您仅检查特定过滤器的索引文件。

 npm i -D husky lint-staged 

让我们回到package.json并添加以下代码:

  "husky": { "hooks": { "pre-commit": "lint-staged" } }, "lint-staged": { "*.(js|jsx|ts|tsx)": [ "npm run eslint:fix", "npm run format", "git add" ] }, 

现在,在每次提交之前,我们将对所有已修改的js和ts文件运行ESLint和Prettier检查,并在格式化后将这些文件添加到我们的提交中。

让我们再次测试index.ts文件:

 var a; console .log(`a = ${a}`); a = 100; 

仅在此文件上,我们立即为该文件建立索引并提交:

 git add index.ts git commit -m "Testing pre-commit hook" 

如果现在检查index.ts文件,您将看到代码已格式化。 保存更改之前,如有必要,将检查文件并设置其格式。 这使您可以确定存储在存储库中的文件的正确性。

##结论

我们必须保存所有更改。 在此之前,创建一个.gitignore文件,在其中写入node_modules ,我们不需要依赖文件夹进入我们的存储库。 我们也可以删除index.ts文件,以后将不再需要它。

 git add . git commit -m "Added husky and lint-staged" git push 

您可以在存储库中看到工作的全部结果。 项目的当前状态是master分支,对于每篇文章,我将创建一个单独的分支。

我们将在这里停止,谢谢大家的关注,在以下部分中与您会面。

参考文献


npm文档
ESLint官方网站
漂亮的夹板
漂亮的夹板
VSCode的漂亮扩展
哈士奇
毛绒阶段

Source: https://habr.com/ru/post/zh-CN476162/


All Articles