# 编程日记:创建Hardhat(2022-08-27) **Published by:** [Corror](https://paragraph.com/@corror/) **Published on:** 2022-08-27 **URL:** https://paragraph.com/@corror/hardhat-2022-08-27 ## Content 编程学习做了什么?成功理解了 yarn init 的作用。成功了解 dependencies 和 devDependencies 之间的区别,从而了解 yarn add --dev hardhat 中 --dev 的作用。成功了解了 npm, npx 和 yarn 之间的关系,从而了解了 npx hardhat 和 yarn hardhat 命令的原理。成功创建了 hardhat javascript 样板项目。成功了解了 @organization/package 这一包命名规则。td 了解 hardhat 样板项目的框架,包括:scripts, test 文件夹,以及其它的文件。有什么收获?yarn init CLI Command来源:Yarn init cli command yarn init 用来交互式地创建 package.json 文件,为项目添加 meta information 元信息。 元信息包括 "name", "version", "description", "author", "license" 等,具体内容如下:Project Meta Informationdependencies vs devDependencies来源:npm - Specifying dependencies and devDependencies in a package.json filenode.js 中文网 - npm 依赖与开发依赖node.js - npm dependencies and devDependenciesCSND - 你真的理解devDependencies和dependencies区别吗?掘金 - 你应该知道的dependencydependencies 指依赖,devDependencies 指开发依赖,它们属于五种 dependency 当中的其中两种。 dependencies 和 devDependencies 的区别在于目的:devDependeies 开发依赖,只用于本地的开发 (develop) 和测试 (test), 其他人使用项目时无需用到这些包。dependencies 依赖,则用于应用的生产,最终其它使用该项目的人也需要用到。比如:部署 (deploy).npm, nps and yarn🔻npm 参考:Stack Overflow - Difference between npx and npm? npm 是 node page management, 即包管理器,它负责安装包和存放包,但是不负责简化包的执行过程。 比如,如果我们想要下载并安装 solc 包,那么我们需要经历如下步骤:安装 solc 包:在 package.json 文件当中,将 LCI 编写为脚本{ "scripts": { "script": "command line" } } 运行命令行:npm run script 🔻npx 参考:掘金 - npx和npm的关系 npx 是 node package executer, 即包执行器,它负责帮助我们更加快捷地执行包命令。 比如:自动安装所缺少的包:当我们执行 npx hardhat 时,如果没有安装 hardhat 包,那么 npx 会在我们确认后,自动帮我们安装 hardhat 包,相当于自动执行 npm install --save-dev hardhat 安装命令。🔻yarn yarn 相当于将 npm 和 npx 结合了起来,即:yarn = npm + npx. 所以,不管是用到 npm 还是用到 npx 的场景,都可以用 yarn 来替代。boilerplate 样板代码boilerplate 是一段固定的代码模板,它自带了一个项目所需的框架。 项目框架以 hardhat 为例:文件夹上,包括:test, scripts, node_modules, contracts.文件内容上,包括:.gitignore, package.json, README.md 等。当我们拥有了骨架之后,我们只需要根据目的,去修改骨架当中的内容,就可以快速省去重复的开发步骤。at (@) sign in node modules在 node_modules 文件夹中,会有以 @ 符号作为开头的依赖包,如下图所示:@ sign in node_modules在 package.json 文件中,也会以 @ 符号作为开头,来声明依赖包:@ sign in devDependencies为什么一个包要以 @organization/package 的形式来命名呢? 因为,这样能够增加依赖包的 namespace 命名空间,让包可以在自定义命名的同时,不用在意命名是否会与已有的包冲突。 以 @ethersproject/abi 为例:@ethersproject 说明包发行方的名称是 ethersproject, 我们可以因此找到它们的 Twitter, 官网,来了解更多的信息。abi 说明包的名称是 abi,并且它的命名只需要在包发行方那里是唯一的就行,不必在整个 npm 的 registry 注册表中唯一。 ## Publication Information - [Corror](https://paragraph.com/@corror/): Publication homepage - [All Posts](https://paragraph.com/@corror/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@corror): Subscribe to updates