[TOC]
# yalc
[yalc](https://github.com/whitecolor/yalc) 是一个类似于本地化 npm 的解决方案,它在本地环境中创建了一个全局共享的 library 存储库,使得你在需要使用本地依赖时可以快速从这个存储库拉取资源进行消费。
当在指定 library 中运行`yalc publish`时,它会将本来发布到 npm 上的库,存储在共享的全局存储中。
在项目中通过 yalc 添加依赖时,`yalc add xxx`会从全局存储拉入信息到项目根目录的`.yalc`文件夹,并将一个文件`"file:.yalc/xxx"`注入`package.json`,这就是`yalc`创建的`flie:`软链接。同时也会在项目根目录创建一个`yalc.lock`确保引用资源的一致性。
因此,测试完项目还需要执行删除`yalc`包的操作,才能正常使用。`yalc`也是支持`link:`链接方式。
~~~shell
# in the in-development package's directory
$ yalc publish
# in the dependent project's directory
$ yalc add <dependency name>
# in the in-development package's directory
$ yalc push # shorthand for yalc publish --push
~~~
## 安装
```
NPM:
npm i yalc -g
Yarn:
yarn global add yalc
```
### 发布依赖
在所开发的依赖项目下执行发布操作
```
yalc publish
```
此时如果存在`npm 生命周期`脚本:`prepublish`、`prepare`、`prepublishOnly`、`prepack`、`preyalcpublish`,会按此顺序逐一执行。如果存在:`postyalcpublish`、`postpack`、`publish`、`postpublish`,也会按此顺序逐一执行。
想要完全禁用脚本执行需要使用
```
yalc publish --no-scripts
```
此时就已经将依赖发布到本地仓库了。此命令只是发包并不会主动推送。
当有新修改的包需要发布并且推送时,可以使用推送命令快速更新**所有**依赖
```
yalc publish --push
yalc push // 简写
```
## 移除依赖
```
yalc remove [my-package]
yalc remove --all // 移除所有依赖并还原
```
## 查看仓库信息
当我们要查看本地仓库里存在的包时
```
yalc installations show
```
要清理不需要的包时
```
yalc installations clean [my-package]
```
参数:
* `--changed`,快速检查文件是否被更改
* `--replace`,强制替换包
> [前端组件库本地开发调试的自动化流程实现](https://zhuanlan.zhihu.com/p/142554961)
> [How to use local Node packages as project dependencies](https://www.viget.com/articles/how-to-use-local-unpublished-node-packages-as-project-dependencies/)
# 参考
[yalc 更适普的前端link工具](https://segmentfault.com/a/1190000039658156)
- 讲解 Markdown
- 示例
- SVN
- Git笔记
- github 相关
- DESIGNER'S GUIDE TO DPI
- JS 模块化
- CommonJS、AMD、CMD、UMD、ES6
- AMD
- RequrieJS
- r.js
- 模块化打包
- 学习Chrome DevTools
- chrome://inspect
- Chrome DevTools 之 Elements
- Chrome DevTools 之 Console
- Chrome DevTools 之 Sources
- Chrome DevTools 之 Network
- Chrome DevTools 之 Memory
- Chrome DevTools 之 Performance
- Chrome DevTools 之 Resources
- Chrome DevTools 之 Security
- Chrome DevTools 之 Audits
- 技巧
- Node.js
- 基础知识
- package.json 详解
- corepack
- npm
- yarn
- pnpm
- yalc
- 库处理
- Babel
- 相关库
- 转译基础
- 插件
- AST
- Rollup
- 基础
- 插件
- Webpack
- 详解配置
- 实现 loader
- webpack 进阶
- plugin 用法
- 辅助工具
- 解答疑惑
- 开发工具集合
- 花样百出的打包工具
- 纷杂的构建系统
- monorepo
- 前端工作流
- 爬虫
- 测试篇
- 综合
- Jest
- playwright
- Puppeteer
- cypress
- webdriverIO
- TestCafe
- 其他
- 工程开发
- gulp篇
- Building With Gulp
- Sass篇
- PostCSS篇
- combo服务
- 编码规范检查
- 前端优化
- 优化策略
- 高性能HTML5
- 浏览器端性能
- 前后端分离篇
- 分离部署
- API 文档框架
- 项目开发环境
- 基于 JWT 的 Token 认证
- 扯皮时间
- 持续集成及后续服务
- 静态服务器搭建
- mock与调试
- browserslist
- Project Starter
- Docker
- 文档网站生成
- ddd