首页 > 其他分享 >Yarn

Yarn

时间:2023-07-18 11:55:04浏览次数:22  
标签:npm -- json yarn js webpack Yarn

        Yarn 是一个新的包管理器,用于替代现有的 npm 客户端或者其他兼容 npm 仓库的包管理工具。Yarn 保留了现有工作流的特性,优点是更快、更安全、更可靠。 

        最初接触 yarn 还是在 0.17.10 版本,由于各种各样的原因,使用时没 npm 顺手, 目前 yarn 的版本已经升级为 1.3.2 各种之前遇到的问题不复存在,安装、下载速度都比 npm 要快很多,这里对之前记录做一下修改。

安装
macOS 通过 homebrew 安装 brew install yarn

Windows 下载安装 下载地址

查看版本 yarn --version1. 开始一个新工程

yarn init 与 npm init 一样通过交互式会话创建一个 package.json
 
    yarn init # yarn 
    npm init # npm
 
    # 跳过会话,直接通过默认值生成 package.json
    yarn init --yes # 简写 -y
    npm init -y

 

 

2. 添加一个依赖
通过 yarn add 添加依赖会更新 package.json 以及 yarn.lock 文件

yarn add <packageName> 依赖会记录在 package.json 的 dependencies 下

    yarn add [email protected] # yarn  --save 是 yarn 默认的,默认记录在 package.json 中
    npm install [email protected] --save # npm

 

yarn add <packageName> --dev 依赖会记录在 package.json 的 devDependencies 下

    yarn add webpack --dev # yarn 简写 -D
    npm install webpack --save-dev # npm

 

yarn global add <packageName> 全局安装依赖

    yarn global add webpack # yarn
    npm install webpack -g # npm

 

3. 更新一个依赖
yarn upgrade 用于更新包到基于规范范围的最新版本

    yarn upgrade # 升级所有依赖项,不记录在 package.json 中
    npm update # npm 可以通过 ‘--save|--save-dev’ 指定升级哪类依赖
 
    yarn upgrade webpack # 升级指定包
    npm update webpack --save-dev # npm
 
    yarn upgrade --latest # 忽略版本规则,升级到最新版本,并且更新 package.json

 

4. 移除一个依赖
yarn remove <packageName>

    yarn remove webpack # yarn
    npm uninstall webpack --save # npm 可以指定 --save | --save-dev 

 

5. 安装 package.json 中的所有文件
yarn 或者 yarn install

    yarn install # 或者 yarn 在 node_modules 目录安装 package.json 中列出的所有依赖
    npm install # npm
 
    # yarn install 安装时,如果 node_modules 中有相应的包则不会重新下载 --force 可以强制重新下载安装
    yarn install --force # 强制下载安装
    npm install --force # npm

 

6. 运行脚本
yarn run 用来执行在 package.json 中 scripts 属性下定义的脚本

    // package.json
    {
        "scripts": {
            "dev": "node app.js",
            "start": "node app.js"
        }
    }
    yarn run dev # yarn 执行 dev 对应的脚本 node app.js
    npm run # npm
 
    yarn start # yarn
    npm start # npm

与 npm 一样 可以有 yarn start 和 yarn test 两个简写的运行脚本方式

7. 显示某个包信息
yarn info <packageName> 可以用来查看某个模块的最新版本信息

    yarn info webpack # yarn 
    npm info webpack # npm
 
    yarn info webpack --json # 输出 json 格式
    npm info webpack  --json # npm
 
    yarn info webpack readme # 输出 README 部分
    npm info webpack readme

 

8. 列出项目的所有依赖
yarn list 

   yarn list # 列出当前项目的依赖
    npm list # npm
 
    yarn list --depth=0 # 限制依赖的深度
    sudo yarn global list # 列出全局安装的模块

 

9. 管理 yarn 配置文件
yarn coinfig

    yarn config set key value # 设置
    npm config set key value
 
    yarn config get key # 读取值
    npm config get key
 
    yarn config delete key # 删除
    npm config delete key
 
    yarn config list # 显示当前配置
    npm config list 
 
    yarn config set registry https://registry.npm.taobao.org # 设置淘宝镜像
    npm config set registry https://registry.npm.taobao.org # npm

 

10. 缓存
yarn cache


11. 问题
1. 通过 yarn run 等运行脚本时,会报错
更新版本后,这个问题不会再出现

  1.   yarn run run
  2.    
  3.   yarn run v0.17.10
  4.   $ webpack-dev-server --progress --colors --config webpack.dev.config.js 
  5.   fs.js:640
  6.     return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
  7.                    ^
  8.    
  9.   Error: EACCES: permission denied, open '/Users/zhangmingjia/Desktop/document/ceshi/temp/router4-test/node_modules/arr-flatten/index.js'


大概意思是没有权限,然后加上 sudo 又试了一下

  1.   sudo yarn run run
  2.    
  3.   yarn run v0.17.10
  4.   $ webpack-dev-server --progress --colors --config webpack.dev.config.js 
  5.    10% building modules 2/2 modules 0 active                                         
  6.   Project is running at http://10.15.32.78:8087/
  7.   webpack output is served from /Users/zhangmingjia/Desktop/document/ceshi/temp/router4-test/dev
  8.   Content not from webpack is served from /Users/zhangmingjia/Desktop/document/ceshi/temp/router4-test/dev
  9.   404s will fallback to /index.html
  10.   Hash: d374085597660a7a1085                                                              
  11.   Version: webpack 2.3.3
  12.   Time: 5083ms
  13.                 Asset      Size  Chunks                    Chunk Names
  14.          js/vendor.js   1.31 MB       0  [emitted]  [big]  vendor
  15.          js/bundle.js   44.5 kB       1  [emitted]         app
  16.   chunk-manifest.json  43 bytes          [emitted]         
  17.        js/manifest.js   5.88 kB       2  [emitted]         manifest
  18.      js/vendor.js.map   1.56 MB       0  [emitted]         vendor
  19.      js/bundle.js.map   43.3 kB       1  [emitted]         app
  20.    js/manifest.js.map    5.9 kB       2  [emitted]         manifest
  21.            index.html   1.28 kB          [emitted]         
  22.   Child html-webpack-plugin for "index.html":
  23.            Asset    Size  Chunks  Chunk Names
  24.       index.html  545 kB       0  
  25.   webpack: Compiled successfully.



看了别人的博客,貌似没有这个问题啊,而且设置的 webpack devServer.open = true, 可以打开浏览器,但是不会跳转到设定好的页面(用 npm 时 没有这个问题)

2. 安装 package.json 中文件的问题
正常安装 sudo yarn add [email protected] package.json 中 出现

  1.       "dependencies": {
  2.           "react": "15.4.2"
  3.       }


通过终端查看安装版本 yarn list

  1.       ├─ [email protected]
  2.       │  ├─ fbjs@^0.8.4
  3.       │  ├─ loose-envify@^1.1.0
  4.       │  └─ object-assign@^4.1.0


是正确的版本,但是,如果在 package.json 中加上如下依赖,然后通过 sudo yarn install 安装

  1.       "dependencies": {
  2.           "react": "15.4.2",
  3.           "react-dom": "^15.4.2",
  4.           "jquery": "^3.0.0"
  5.       }


通过终端查看安装版本 yarn list

  1.       ├─ [email protected]
  2.       │  ├─ fbjs@^0.8.9
  3.       │  ├─ loose-envify@^1.1.0
  4.       │  ├─ object-assign@^4.1.0
  5.       │  └─ prop-types@~15.5.0
  6.       ├─ [email protected]
  7.       │  ├─ fbjs@^0.8.4
  8.       │  ├─ loose-envify@^1.1.0
  9.       │  └─ object-assign@^4.1.0
  10.       ├─ [email protected]



react 还是之前的版本,但是 新安装的 react-dom 和 jquery 都变成了 最新版本

再试试将版本号的写法变一下 去掉 ^

   

  1.   "dependencies": {
  2.           "react": "15.4.2",
  3.           "react-dom": "15.4.2",
  4.           "jquery": "3.0.0"
  5.       }


通过 sudo yarn install 安装 查看安装版本 yarn list

  1.       ├─ [email protected]
  2.       │  ├─ fbjs@^0.8.1
  3.       │  ├─ loose-envify@^1.1.0
  4.       │  └─ object-assign@^4.1.0
  5.       ├─ [email protected]
  6.       │  ├─ fbjs@^0.8.4
  7.       │  ├─ loose-envify@^1.1.0
  8.       │  └─ object-assign@^4.1.0
  9.       ├─ [email protected]


安装的是正确的版本了

说明
"react-dom": "^15.4.2"这种写法,加了^,是一般是通过npm install --save安装插件生成版本号的默认格式,表示安装15.x.x的最新版本,安装时不改变大版本号

"react-dom": "15.4.2"这种写法,只有版本号,是 yarn add安转后生成版本号的默认格式,表示必须安装同一个版本号

版本号控制,有一个规范,就是语义化版本号控制,规定了版本号格式为:主版本号.次版本号.修订号;

主版本号:当你做了不兼容的 API 修改
次版本号:当你做了向下兼容的功能性新增
修订号:当你做了向下兼容的问题修正
一般来讲 只要主版本号正确,就可以兼容,但是像 最新版的 [email protected] ,出现了React.createClass与React.PropTypes弃用的警告,控制台一片红,因为引用了第三方组件库,最后选择暂不升级react,类似的情况,个人感觉 yarn 默认的版本号写法(只安装特定版本的文件),更符合需求,npm 的话,很可能导致两个拥有同样package.json 的应用,安装了不同版本的包,进而导致一些BUG

3. 在 yarn 或者 npm 中设置默认版本规则
npm set save-exact true 全局设置 package.json 只记录确切版本号 node: 1.1.1,
npm config set save-prefix '~' 设置安装新模块时,package.json 记录版本号的方式 ~ \ ^ 等
sudo yarn config set save-prefix '~' 通过 yarn 设置,要有 sudo 权限
注意: 通过以上设置可以更改package.json 中记录的版本号默认方式,但是 yarn 的设置是带有 sudo 权限的,通过 sudo add <packageName> 的模块才会按照设置的方式更新版本号

12. 总结
就像官网上说的,yarn 的安装速度快,能并行化操作以最大化资源利用率;安全,Yarn会在每个安装包被执行前校验其完整性。正式版的 yarn 比较与 npm 更高效。
 

  文章知识点与官方知识档案匹配,可进一步学习相关知识 Vue入门技能树Node.js和npmNPM命令34897 人正在系统学习中  

标签:npm,--,json,yarn,js,webpack,Yarn
From: https://www.cnblogs.com/chentiao/p/17562514.html

相关文章

  • 界面怎么查看hadoop yarn某个任务日志
    在HadoopYARN中,要查看某个任务的日志,可以通过Web界面来实现。下面将介绍如何通过界面查看HadoopYARN某个任务的日志,并附有相应的代码示例。首先,YARN提供了一个Web界面,可以通过浏览器访问。默认情况下,该界面的URL为:http://<ResourceManager的主机名>:8088/cluster。可以通过修改y......
  • yarn : 无法加载文件 E:\nodejs\yarn.ps1,因为在此系统上禁止运行脚本。问题解决
    1.在电脑的开始菜单中,搜索PowerShell ,然后以管理员身份运行,如下所示:2.以管理员身份运行后,会出现命令窗口,接下来,输入命令get-ExecutionPolicy 查看权限,会看到它的返回值是 Restricted ,意思是当前是禁用的。3.执行命令:set-ExecutionPolicyRemoteSigned,没有报错就......
  • npm yarn 淘宝镜像命令设置
    一、Yarn设置淘宝镜像1.查询当前配置的镜像yarnconfiggetregistry//默认:https://registry.yarnpkg.com2.设置成淘宝镜像yarnconfigsetregistryhttp://registry.npm.taobao.org/3.换成原来的yarnconfigsetregistryhttp://registry.npmjs.org/二、NPM设......
  • 大数据面试题集锦-Hadoop面试题(四)-YARN
    你准备好面试了吗?这里有一些面试中可能会问到的问题以及相对应的答案。如果你需要更多的面试经验和面试题,关注一下"张飞的猪大数据分享"吧,公众号会不定时的分享相关的知识和资料。目录1、为什么会产生yarn,它解决了什么问题,有什么优势?2、简述hadoop1与hadoop2的架构异同3、H......
  • Hadoop中YARN集群启停命令
    一键启停脚本#一键启动yarn集群start-yarn.sh#一键关闭yarn集群stop-yarn.sh单进程启停start和stop决定启动和停止可控制resourcemanager、nodemanager、proxyserver三种进程yarn--daemonstart|stopresourcemanager|nodemanager|proxyserver历史服务器启动或停止map......
  • mac执行npm或yarn命令时报Error: EACCES: permission denied,
    npm下载的时候会告知权限没有这是由于之前使用了sudo去下载一些东西,导致文件拥有者都变成了root,只需要修改权限即可。Error:EACCES:permissiondenied,symlink‘…/lib/node_modules/json-server/lib/cli/bin.js’->‘/usr/local/bin/json-server’解决方法:找到......
  • 大数据学习--YARN集群部署
     发现学习大数据,首先配置就很多,一点一点配置,出错一点就不行啊。 ......
  • Yarn
    常用命令yarn/yarninstall等同于npminstall批量安装依赖yarnaddxxx等同于npminstallxxx—save安装指定包到指定位置yarnremovexxx等同于npmuninstallxxx—save卸载指定包yarnaddxxx—dev等同于npminstallxxx—save-devyarnupgrade等同于......
  • Yarn的实现原理
    Yarn作为分布式集群的资源调度框架,它的出现伴随着Hadoop的发展,使Hadoop从一个单一的大数据计算引擎,成为一个集存储、计算、资源管理为一体的完整大数据平台,进而发展出自己的生态体系,成为大数据的代名词。所以在我们开始聊Yarn的实现原理前,有必要看看Yarn发展的过程,这对你理解Yarn......
  • 发布yarn包
    创建软件包首先我们需要创建一个软件包,可以通过下列几个命令来创建,如下所示:gitinitmy_yarncdmy_yarnyarninit看一下这几个命令的执行效果:其中gitinitmy_yarn命令将会初始化创建一个新本地仓库,它在工作目录下生成一个名为.git的隐藏文件夹。然后使用cdmy_yarn命......