Skip to content

Commit bf7252d

Browse files
committed
lerna
1 parent 2c3a42e commit bf7252d

File tree

2 files changed

+73
-10
lines changed

2 files changed

+73
-10
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,28 @@
11
### 递归
22

33
```js
4-
function fibonacci(n) {
5-
if(n === 1) return 1;
6-
return fibonaci(n) * fibonaci(n - 1);
7-
}
4+
function fibonacci(n) {
5+
if (n === 1) return 1;
6+
return fibonaci(n) * fibonaci(n - 1);
7+
}
88
```
99

1010
递归非常耗费内存,因为需要同时保存成千上百个调用帧,很容易发生“栈溢出”错误(stack overflow)。
1111

1212
### 尾递归(不会爆栈)
1313

1414
```js
15-
function fibonacci(n, total) {
16-
if(n === 1) return total;
17-
return fibonaci(n - 1, n * total);
18-
}
19-
console.log(fibonacci(5, 1));
15+
// fibonaci(5, 1, 1)
16+
// fibonaci(4, 1, 2)
17+
// fibonaci(3, 2, 3)
18+
// fibonaci(2, 3, 5)
19+
// fibonaci(1, 5, 8)
20+
// fibonaci(0, 8, 13) => 8
21+
function fibonacci(n, ret1, ret2) {
22+
if (n === 0) return ret1;
23+
return fibonaci(n - 1, ret2, ret1 + ret2);
24+
}
25+
console.log(fibonacci(5, 1, 1));
2026
```
2127

22-
但对于尾递归来说,由于只存在一个调用帧,所以永远不会发生“栈溢出”错误。
28+
但对于尾递归来说,由于只存在一个调用帧,所以永远不会发生“栈溢出”错误。

lerna/README.md

+57
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# Lerna
2+
3+
Lerna 是一个 monorepo 包管理工具,可以将不同的软件包集中在一起管理,在保持独立性的同时又能保持包之间的关联性。
4+
5+
## 初始化项目
6+
7+
使用之前需要本地安装 lerna,截止我记录前的最新版本是 4.0.0。
8+
9+
```shell
10+
npm i lerna -g
11+
```
12+
13+
使用命令 `lerna init` 初始化项目:
14+
15+
```shell
16+
lerna init
17+
```
18+
19+
这条命令将会做两件事:
20+
21+
1. 如果 lerna 不存在,将会在根目录下 package.json 中的 devDependency 里加入 lerna 依赖。
22+
2. 创建一个 lerna.json 配置文件来存储版本号。
23+
24+
在使用此命令时还可以使用可选项:
25+
26+
1. --independent
27+
28+
```shell
29+
lerna init --independent
30+
```
31+
32+
该标志告诉 Lerna 使用独立版本控制模式,这种模式允许使用者对每个 package 单独改变版本号。每次执行 lerna publish 的时候,针对所有有更新的package,会逐个询问需要升级的版本号,基准版本为它自身的 package.json 里面的版本号。
33+
34+
2. --exact(默认模式)
35+
36+
```shell
37+
lerna init --exact
38+
```
39+
40+
该标志告诉 Lerna 使用固定版本控制模式,这种模式下所有包都会使用 lerna.json 的统一版本号。
41+
42+
生成的项目结构如下:
43+
44+
```
45+
lerna-repo/
46+
packages/
47+
package.json
48+
lerna.json
49+
```
50+
51+
其中 packages 就是后续我们要单独管理的包的集合,每增加一个包,都会在 packages 下新增一个目录。
52+
53+
## 新增 package
54+
55+
在 packages 下新增包是通过 `lerna create` 命令实现的。
56+
57+

0 commit comments

Comments
 (0)