[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