yarn2的安装与使用

3,438 阅读1分钟

yarn2的安装与使用

1. yarn2的安装

  • 安装yarn1
$ npm i -g yarn
  • 进入项目所在目录
$ cd YOUR-PROJECT-PATH
  • 设置yarn2
$ yarn set version berry
>yarn set version berry
Resolving berry to a url...
Downloading https://raw.githubusercontent.com/yarnpkg/berry/master/packages/berry-cli/bin/berry.js...
Saving it into C:\Users\Administrator\Desktop\web_test\express-http-https\.yarn\releases\yarn-berry.cjs...
Updating C:\Users\Administrator\Desktop\web_test\express-http-https/.yarnrc.yml...
Done!

如果出现如下不能成功下载,可以修改下载地址

Resolving berry to a url...
Downloading https://github.com/yarnpkg/berry/raw/master/packages/berry-cli/bin/berry.js...
error An unexpected error occurred: "https://github.com/yarnpkg/berry/raw/master/packages/berry-cli/bin/berry.js: getaddrinfo ENOENT raw.githubusercontent.com".

修改node_modules\yarn\lib\cli.js中的berry.js下载地址

//bundleUrl = 'https://github.com/yarnpkg/berry/raw/master/packages/berry-cli/bin/berry.js';
bundleUrl = 'https://ghproxy.com/https://raw.githubusercontent.com/yarnpkg/berry/master/packages/berry-cli/bin/berry.js';
bundleVersion = 'berry';
  • 验证是否为berry版本
$ yarn --version
3.0.1
  • 基本命令
# 安装依赖
yarn
yarn install

# 添加依赖
yarn add [package] [--dev|--peer]

# 删除依赖
yarn remove [package]

3. yarn2的配置

配置文件.yarnrc.yml,配置选项www.yarnpkg.cn/configurati…

yarnPath: ".yarn/releases/yarn-berry.cjs"
cacheFolder: "./.yarn/cache"
nodeLinker: "pnp"
# nodeLinker: "node-modules"
npmRegistryServer: "https://registry.npm.taobao.org"

注意: nodeLinker可以设置pnp和node-modules(不是node_modules),pnp为yarn berry的默认设置,如果想和npm一样使用node_modules,可以将nodeLinker设置为node_modules

4. 测试代码

  • 代码index.js
'use strict';

const util = require('util');

const http = require('http');
const express = require('express');

const httpPort = 8080;

const app = express();

let httpServer = http.createServer(app);

app.get('/', function(req, res, next) {
    let info = util.format('%s - %s %s %s %s', new Date().toLocaleString(), req.protocol, req.method, req.originalUrl, req.ip);
    console.log(info);
    res.send(info);
});

httpServer.listen(httpPort);

console.log(util.format('http://localhost:%s', httpPort));
  • 配置工程
$ cd YOUR-PROJECT-PATH
$ yarn init
$ yarn add express
$ yarn install

package.json内容

{
  "name": "express-http",
  "packageManager": "yarn@3.0.1",
  "dependencies": {
    "express": "^4.17.1"
  }
}

运行:

  • 方式1(node启动配置):
$ node --require ./.pnp.cjs index.js
http://localhost:8080
  • 方式2(yarn启动):
yarn node ./server.js
  • 方式3(修改入口代码): 入口代码增加
yarn node ./server.js

目录结构:

.
+--- .pnp.cjs
+--- .yarn
|   +--- cache
|   |   +--- .gitignore
|   |   +--- accepts-npm-1.3.7-0dc9de65aa-27fc8060ff.zip
|   |   +--- array-flatten-npm-1.1.1-9d94ad5f1d-a9925bf351.zip
|   |   +--- body-parser-npm-1.19.0-6e177cabfa-490231b4c8.zip
|   |   +--- bytes-npm-3.1.0-19c5b15405-7c3b21c5d9.zip
|   |   +--- content-disposition-npm-0.5.3-9a9a567e17-95bf164c0b.zip
|   |   +--- content-type-npm-1.0.4-3b1a5ca16b-3d93585fda.zip
|   |   +--- cookie-npm-0.4.0-4b3d629e45-760384ba0a.zip
|   |   +--- cookie-signature-npm-1.0.6-93f325f7f0-f4e1b0a98a.zip
|   |   +--- debug-npm-2.6.9-7d4cb597dc-d2f51589ca.zip
|   |   +--- depd-npm-1.1.2-b0c8414da7-6b406620d2.zip
|   |   +--- destroy-npm-1.0.4-a2203e01cb-da9ab4961d.zip
|   |   +--- ee-first-npm-1.1.1-33f8535b39-1b4cac778d.zip
|   |   +--- encodeurl-npm-1.0.2-f8c8454c41-e50e3d508c.zip
|   |   +--- escape-html-npm-1.0.3-376c22ee74-6213ca9ae0.zip
|   |   +--- etag-npm-1.8.1-54a3b989d9-571aeb3dbe.zip
|   |   +--- express-npm-4.17.1-6815ee6bf9-d964e9e17a.zip
|   |   +--- finalhandler-npm-1.1.2-55a75d6b53-617880460c.zip
|   |   +--- forwarded-npm-0.2.0-6473dabe35-fd27e2394d.zip
|   |   +--- fresh-npm-0.5.2-ad2bb4c0a2-13ea8b08f9.zip
|   |   +--- http-errors-npm-1.7.2-67163ae1df-5534b0ae08.zip
|   |   +--- http-errors-npm-1.7.3-f6dc83b082-a59f359473.zip
|   |   +--- iconv-lite-npm-0.4.24-c5c4ac6695-bd9f120f5a.zip
|   |   +--- inherits-npm-2.0.3-401e64b080-78cb8d7d85.zip
|   |   +--- inherits-npm-2.0.4-c66b3957a0-4a48a73384.zip
|   |   +--- ipaddr.js-npm-1.9.1-19ae7878b4-f88d382598.zip
|   |   +--- media-typer-npm-0.3.0-8674f8f0f5-af1b38516c.zip
|   |   +--- merge-descriptors-npm-1.0.1-615287aaa8-5abc259d2a.zip
|   |   +--- methods-npm-1.1.2-92f6fdb39b-0917ff4041.zip
|   |   +--- mime-db-npm-1.49.0-c35e06b8e1-3744efc45b.zip
|   |   +--- mime-npm-1.6.0-60ae95038a-fef25e3926.zip
|   |   +--- mime-types-npm-2.1.32-19eafe8a3f-4487dfd2f8.zip
|   |   +--- ms-npm-2.0.0-9e1101a471-0e6a22b8b7.zip
|   |   +--- ms-npm-2.1.1-5b4fd72c86-0078a23cd9.zip
|   |   +--- negotiator-npm-0.6.2-ba538e167a-dfddaff6c0.zip
|   |   +--- on-finished-npm-2.3.0-4ce92f72c6-1db595bd96.zip
|   |   +--- parseurl-npm-1.3.3-1542397e00-407cee8e0a.zip
|   |   +--- path-to-regexp-npm-0.1.7-2605347373-69a14ea24d.zip
|   |   +--- proxy-addr-npm-2.0.7-dae6552872-29c6990ce9.zip
|   |   +--- qs-npm-6.7.0-15161a344c-dfd5f6adef.zip
|   |   +--- range-parser-npm-1.2.1-1a470fa390-0a268d4fea.zip
|   |   +--- raw-body-npm-2.4.0-14d9d633af-6343906939.zip
|   |   +--- safe-buffer-npm-5.1.2-c27fedf6c4-f2f1f7943c.zip
|   |   +--- safer-buffer-npm-2.1.2-8d5c0b705e-cab8f25ae6.zip
|   |   +--- send-npm-0.17.1-aad5512679-d214c2fa42.zip
|   |   +--- serve-static-npm-1.14.1-a7afb1d3b3-c6b268e848.zip
|   |   +--- setprototypeof-npm-1.1.1-706b6318ec-a8bee29c1c.zip
|   |   +--- statuses-npm-1.5.0-f88f91b2e9-c469b9519d.zip
|   |   +--- toidentifier-npm-1.0.0-5dad252f90-199e6bfca1.zip
|   |   +--- type-is-npm-1.6.18-6dee4d4961-2c8e47675d.zip
|   |   +--- unpipe-npm-1.0.0-2ed2a3c2bf-4fa18d8d8d.zip
|   |   +--- utils-merge-npm-1.0.1-363bbdfbca-c810954932.zip
|   |   +--- vary-npm-1.1.2-b49f70ae63-ae0123222c.zip
|   +--- install-state.gz
|   +--- releases
|   |   +--- yarn-berry.cjs
+--- .yarnrc.yml
+--- index.js
+--- package.json
+--- yarn.lock