2022/03/29 Mac布置项目环境进行包管理
2022/03/29 Mac布置项目环境进行包管理
部署环境debugapi
使用在线编译器进行环境部署--->在线编译器remix
配置git--->拉取两个需要测试的项目
-
通过本地
git生成ssh密钥 -
使用本地的
ssh公钥配置到github上- 打开
github - 进入
Settings -- SSH and GPG keys - 查看公钥文件 --->
cat ~/.ssh/id_rsa.pub - 复制内容输入输入框
- 打开
-
测试是否配置成功 --->
ssh -T git@github.com -
开始将项目拉取到本地 --->由于我第一次拉取的时候提示身份验证问题.所以直接
yes跳过继续拉取
配置项目环境
脚本部署
线上部署
brew安装yarn ---> 使用npm安装yarn --->npm install -g yarn
使用yarn安装环境依赖 ---> 直接执行yarn
node.js的npm包管理、yarn包管理
什么是node.js?
node.js是运行在服务端的JavaScript
node.js的特性
- 阻塞
阻塞是指:一部分node.js代码需要等到一些非node.js代码执行完成之后才能继续执行.
阻塞的特点:
阻塞的方法都是同步执行的
- 非阻塞
非阻塞是指:node.js中所有与I/O相关的方法都提供了异步版本.可以指定回调函数
非阻塞的方法都是异步执行的
- 事件驱动
事件产生者发布一个事件,事件订阅者在收到事件后执行某段代码
什么是npm?
npm是node.js一起安装的包管理工具
npm的组成部分:
- 网站--->开发者查找包、设置参数、管理
npm使用体验的主要途径 - 注册表--->数据块,保存每个包的信息
CLI通过命令行或者终端允许,开发者通过CLI与npm打交道
npm的基本命令?
查看是否安装成功:
npm -v
升级:
npm install npm -g
安装需要的模块:
npm install <Moudle Name>
安装web框架:
npm install express --->安装成功后只需要在项目中require("express")即可引用
什么是yarn?
yarn的定义:
Yet Another Resource Negotiator,一个快速、可靠、安全的依赖管理工具,一款新的JavaScript包管理工具.代码通过包(package)的方式来共享.描述包信息的文件为package.json
Yarn的工作流:
创建一个新项目--->添加/更新/删除依赖项--->安装/重新安装依赖项--->使用版本管理工具--->持续集成
由上面可以知道node.js中开发者通过CLI与包管理工具打交道.yarn也提供了相应的命令行来处理yarn包的各个方面
yarn add --->添加要在当前包中使用的包
yarn init --->初始化一个包的开发
yarn install --->安装package.json文件中定义的所有依赖项 (固只需要维护一个文件即可) --->通常简单粗暴且常用
yarn publish --->包发不到包管理器
yarn remove --->从当前包中删除未使用的包
注意:
不使用命令行运行yarn将运行yarn install
yarn的一些指令
yarn <command> [<args>] 如果命令与本地安装的CLI匹配,Running将运行该命令
输出包的详情:
yarn <command> --verbose打印执行的详细信息
指定工作目录:
yarn --cwd <command> --->指定工作目录而不是默认的./
用户自定义脚本:
Running yarn <script> [<args>] --->运行用户定义的script --->scripts在pakcage.json文件中 --->scripts是一个构建和测试的对象,例如:
{ "name": "my-package", "scripts": { "build": "babel src -d lib", "test": "jest" } }
-
yarn run [script] [<args>]--->如果在package.json文件中定义了一个对象的话那么将会执行该对象 --->如:yarn run test--->test是定义在scripts里面的一个对象 -
给运行的脚本带参数 --->
yarn test -o --watch此命令等价于yarn run test -o --watch -
如果根据上面的
json文件执行yarn run build的话那么会先执行yarn run prebuild在执行yarn build列出运行时脚本可用的环境变量:
yarn run env列出所有可用于运行包的脚本:
yarn run
并发和--mutex:
在同一服务器上以同一用户身份运行多个yarn实例时,通过传递全局标志--mutex,后跟fileor来确保在任何给定时间仅运行一个实例(并避免冲突)network
使用Yarn 时,默认情况下会在当前工作目录中file写入/读取互斥体文件..yarn-single-instance还可以指定备用或全局文件名.例如:
--mutex file
--mutex file:/tep/.yarn-mutex
yarn的依赖管理和版本管理
yarn的包依赖管理
yarn依赖类型
package.json文件是声明所有依赖项的位置,要为每个依赖项制定包名称和最低版本信息--->package.json通过name和version来创建唯一的一个id
package.json的关键字段:
name--->例如:{"name": "my-awesome-package"}这个name使用在URL当中
命名提示:
不要使用与核心Node.js模块相同的名称 不要把js或node放在名字里 保持名称简短且具有描述性.您希望人们从名称中了解它是什么,但它也将用于require()通话. 确保注册表中没有同名的内容.
-
version--->软件包版本 -
description--->包用途描述,一段字符串 -
keywords--->包管理器中搜索包时有用的字符串数组 -
license--->许可证
指向包的链接:
-
homepage--->文档URL -
bugs--->问题跟踪URL -
repository--->存储库,包实际代码所在的位置
维护者:
-
author--->作者信息 -
contributors--->贡献者
文件:
-
files--->包含在项目中的文件 -
main--->项目功能的主要入口 -
bin--->项目中包含的可执行文件 -
man--->项目相关手册页 -
directories--->指定放置二进制文件、手册页、文档、示例等的确切位置
任务:
scripts--->关联自动化任务和包的方法.举例:{ "scripts": { "build-project": "node build-project.js" } }
可以被调用yarn run build-project将运行node build-project.js
某些脚本名称是特殊的.如果已定义,preinstall脚本会在安装包之前由yarn调用.出于兼容性原因,名为install、postinstall、prepublish和的脚本prepare都将在软件包安装完成后调用.
start脚本默认值node server.js为:
{ "config": { "port": "8080" } }
实际开发过程中会有很多依赖项,例如开发需要一些依赖运行不需要,yarn的package.json可以实现这些不同情况下的包管理和版本控制,例如:
{ "name": "my-project", "dependencies": { "package-a": "^1.0.0" }, "devDependencies": { "package-b": "^1.2.1" }, "peerDependencies": { "package-c": "^2.5.4" }, "optionalDependencies": { "package-d": "^3.1.0" } }
-
dependecies:正常依赖项,运行代码时需要的依赖项如(React或ImmutableJS -
devDependencies:开发依赖项,开发工作流程中的某些时候需要的依赖项,但在运行代码时不需要(例如Babel或Flow) -
peerDependencies:对等依赖项.拥有对等依赖意味着你的包需要一个与安装你的包的人完全相同的依赖.react这对于需要react-dom安装它的人也使用的单个副本的软件包很有用. -
optionalDependencies:可选依赖项,如果这个里面的内容安装失败那么yarn一样会报安装成功 -
bundledDependencies:发布包时将捆绑的包名称数组,在脚本运行时也会被打包yarn pack
捆绑依赖包的使用场景:
正常依赖项从npm注册表安装,捆绑依赖项的使用场景:
- 想重用不是来自
npm注册表或已修改的第三方库时. - 想将自己的项目重新用作模块时.
- 想用你的模块分发一些文件时
-
flat:包只允许给定依赖项的一个版本,并希望强制执行yarn install --flat则设置其为true{ "flat": true } -
resolutions:覆盖特定嵌套依赖项的版本,通过安装yarn install --flat添加一个resolutions块
.yarnc文件
功能:
允许配置其他yarn功能,yarn会将文件.yarnrc合并到文件树上
关键提示:
disable-self-update-check --->安装包时,如果CLI安装过时,Yarn将提供升级说明,可以在此处禁用此检查.
yarn依赖的版本
版本范围:
示例:
{ "dependencies": { "package-1": ">=2.0.0 <3.1.4", "package-2": "^0.4.2", "package-3": "~2.7.1" } }
里面的一些关键点:
版本区间:
在这里交集、并集、区间不做介绍,详情访问
-
预发布标签版本:例如(
3.1.4-beta.2)将仅与具有相同major.minor.patch版本的版本匹配 -
连字符范围例如
2.0.0 ~ 3.1.4安装该版本号区间内的版本,扩展范围例如0.4 ~ 2=>>=0.4.0 && <=2.0.0的版本 -
x范围任何X,x或*都可用于保留部分或全部版本未指定.作用相当于占位符,例如*扩展版本范围是>=0.0.0(任何版本),2.x是指>=2.0.0 && <3.0.0的版本 -
波浪号范围例如
~3.1.4版本扩展范围是>=3.1.4 && <3.2.0又如:~3扩展版本范围是3.x=>>=3.0.0 && <4.0.0 -
插入号范围例如
^3.1.4扩展版本范围到>=3.1.4 && <4.0.0,这里的^只控制一个小的版本.例如:0.0.2扩展版本范围到>=0.0.2 && <0.0.3.如果带了x则扩展到大版本.例如:0.x扩展版本范围到>=0.0.0 && <1.0.0 -
yarn的包版本管理
yarn.lock通过存储与包一起安装的依赖项的版本来确保包在安装之间保持一致
使用yarn.lock文件来固化依赖,无须碰这个文件,yarn会报关这个文件并在管理依赖项时修改这个文件.
yarn.lcok的特点:
yarn.lock文件是自动生成的,完全由Yarn处理,不需要直接编译它
随笔
solidity的代码可以编译会挂在服务端上,使用node.js将solidity代码作为js的第三方包进行引用.然后模拟使用js模拟触发solidity的条件对solidity代码进行调用
node.js调用的是solidity编译后提供的abi

浙公网安备 33010602011771号