open-index/open-npm huggingface dataset:
npm package: @feige0629/lerna
Description: ### 1、安装/初始化 lerna
Latest version: 0.0.3

# lerna 使用

### 1、安装/初始化 lerna

```js
npm i lerna -g
lerna init
```

### 2、新增包
```js
lerna create <name> [loc] // 创建一个包，name包名，loc 位置可选
lerna list // 查看包
```

### 3、安装依赖 bootstrap
> 包之间可以建立链接，当修改 A 包的源代码时，B 的 node_modules 中引用的 A 包也会相应修改
```js
lerna bootstrap
lerna add A --scope=B // 给A添加以依赖B
lerna bootstarp // 这条命令会给所有的package安装依赖
lerna bootstrap --scope=package // 安装某个依赖包
lerna bootstrap --hoist axios // 提升公共包到根目录
lerna clean // 删除所有依赖
lerna clean --scope=package //删除某个包的依赖
```

### 4、运行 package
```js
lerna run build // 所有包都会执行打包命令
lerna run start --scope=package // 运行某个包中的script命令
```

### 5、发布版本 publish
> 当执行 lerna publish 后会在项目根目录以及每个 packages 包下，生成 CHANGELOG.md

> lerna version
这个命令 识别出修改的包 --> 创建新的版本号 --> 修改 package.json --> 提交修改 打上版本的 tag --> 推送到 git 上。
```js
lerna publish
lerna version --force-publish // 忽略修改强制生成版本
```
### 创建 changelog
```js
npm i conventional-changelog-cli --save // 安装changlog插件
lerna version --conventional-commits // 使用了这个选项， lerna 会收集日志， 自动生成 CHANGELOG
```

# 相关命令

```js
lerna bootstrap	安装依赖
lerna clean	删除各个包下的node_modules
lerna init	创建新的lerna库
lerna list	显示package列表
lerna changed	显示自上次relase tag以来有修改的包， 选项通 list
lerna diff	显示自上次relase tag以来有修改的包的差异， 执行 git diff
lerna exec	在每个包目录下执行任意命令
lerna run	执行每个包package.json中的脚本命令
lerna add	添加一个包的版本为各个包的依赖
lerna import	引入package
lerna link	链接互相引用的库
lerna create	新建package
lerna publish --registry=https://npm.tx.cnmiaosu.com --no-push	发布
lerna version --registry=https://npm.tx.cnmiaosu.com --no-push	设置版本
lerna run build --scope=@makeapie/stylus 打指定包

https://www.jianshu.com/p/a968a637f6ff
```


如果您只想发布 lerna 仓库中的某个包，而不是整个 lerna 仓库中的所有包，可以使用 `lerna publish` 命令的 `--scope` 选项。 `--scope` 选项会将 `lerna publish` 命令的作用范围限制在指定的包上，从而避免发布不需要更新的包。

例如，要发布名为 `mypackage` 的包，您可以运行以下命令：

```bash
lerna publish --scope mypackage
```

上述命令会自动检测 `mypackage` 包的版本，并提示您输入新版本号。如果要跳过版本号的选择提示，可以使用 `--yes` 选项。例如：

```bash
lerna publish --scope mypackage --yes
```

如果要发布 `mypackage` 包中的预发布版本（如 beta、alpha 或 rc 版本），可以使用 `--npm-tag` 选项。例如：

```bash
lerna publish --scope mypackage --npm-tag beta
```

该命令会在 npm 发布时将 `mypackage` 包的版本标记为 `beta`，并将其发布到 npm 的 `"beta"` 标签上。在其他 `npm install` 命令中，您可以加上 `--tag beta` 选项来安装预发布版本。

需要注意的是，如果 `mypackage` 包有待解决的依赖关系或其他错误，`lerna publish` 命令会在发布过程中阻止您，并输出相应的错误信息。在运行 `lerna publish` 命令之前，请确保您的包已经通过了本地测试，并已经解决了可能出现的问题。
npm package: @feige0629/react-common-store
Description: ```tsx yarn add @feige0629/react-common-store
Latest version: 0.1.4

### 1、使用方法
```tsx
yarn add @feige0629/react-common-store

npm install @feige0629/react-common-store
```

#### 调用
```tsx
import * as React from "react";
import { StoreRoot } from "@feige0629/react-common-store";

export default function App() {
    return (
        <StoreRoot>
            ...
        </StoreRoot>
    );
}
```

#### 定义数据
```tsx
import { initState, compute } from "@feige0629/react-common-store";

export const $showGuides = initState<boolean>(true);
export const $selectedFlattenLayers = compute(({ get }) => {
    const layerManager = get($layerManager)!;
    const selectedLayers = get($selectedLayers)!;

    return layerManager.toFlatten(selectedLayers);
});
```

### 使用
```tsx
import { useStoreRoot, useStoreStateSetPromise, useStoreStateValue, useStoreValue, useStoreState } from "@feige0629/react-common-store";
import { $showGuides, $selectedFlattenLayers } from "./stores";

// 第一种
const root = useStoreRoot();
const layers = root.get($layers);
root.set($layers, '新数据');


// 第二种
useStoreValue($showGuides, '新数据'); // 绑定全局数据

const showGuidesStore = useStoreValue($showGuides); // 获取数据
const value = showGuidesStore.value;

showGuidesStore.update(value); // 设置数据

// 第三种
const showGuidesStore = useStoreStateValue($showGuides); // 仅仅用来获取数据

// 第四种
const showGuidesStore = useStoreStateSetPromise($showGuides);
showGuidesStore('新数据').then(complete => { // 设置数据
    if (!complete) {
        return false;
    }
    
    ....

    return complete;
});

// 第五种
const [guidelines, setGuidelines] = useStoreState($showGuides);
guidelines // 获取数据
setGuidelines('新数据') // 设置数据

// 第六种
const setShowGuidesValue = useStoreStateSetValue($showGuides);
setShowGuidesValue('新数据') // 设置数据
```