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