[TOC]
# Volta
[Volta](https://volta.sh/) 是一個 JavaScript 工具管理器,它可以讓我們輕松地在項目中鎖定 node,npm 和 yarn 的版本。你只需在安裝完 Volta 后,在項目的根目錄中執行 `volta pin` 命令,那么無論您當前使用的 node 或 npm(yarn)版本是什么,volta 都會自動切換為您指定的版本。
因此,除了使用 Docker 和顯示在文檔中聲明 node 和 npm(yarn)的版本之外,您就有了另一個鎖定環境的強力工具。
而且相較于 nvm,Volta 還具有一個誘人的特性:當您項目的 CLI 工具與全局 CLI 工具不一致時,Volta 可以做到在項目根目錄下自動識別,切換到項目指定的版本,這一切都是由 Volta 默默做到的,開發者不必關心任何事情。
## 安裝
```
$ brew install volta
$ volta help # 幫助
$ volta setup # 為當前用戶/ shell 啟用 Volta,修復可能的命令不生效
$ volta ls all # 列出所有版本
$ volta ls node # 列出所有已安裝的 node 版本
```
## 安裝軟件
`volta use xx` 已經棄用
```
$ volta install node@13.10
$ volta install pnpm
$ volta install git-cz yalc
```
## 卸載 node
目前只能通過手動的方式:
```
rm -rf ~/.volta/tools/image/node/
```
> [Unclear how to remove Node.js version · Issue #855 · volta-cli/volta](https://github.com/volta-cli/volta/issues/855)
## 示例
```
$ cd hello
$ volta install node@14.8
```
在 hello 項目根目錄下執行`volta pin`命令,那么會加入一段 json 到`package.json`中:
```
"volta": {
"node": "12.8.0"
}
```
如果不在hello目錄下執行`node -v`,node的版本13;但我進入 hello 項目再執行`node -v`,node的版本12。
## 小結
而 volta 所安裝的 node/npm/yarn 的全局命令可以由`~/.volta/bin`下看到,全都指向`volta-shim`執行文件,也就是都由`volta-shim`來判斷是否需要切換版本或使用默認版本,這樣就比 nvm 方便太多了。
# bunjs
[oven-sh/bun](https://github.com/oven-sh/bun)
Incredibly fast JavaScript runtime, bundler, transpiler and package manager – all in one
# sucrase
[alangpierce/sucrase](https://github.com/alangpierce/sucrase)
Super-fast alternative to Babel for when you can target modern JS runtimes
# Verdaccio
1. 公司的業務代碼是不能對外開放的,因此我們有必要搭建一個類似于 http://npmjs.org 這個的一個私有平臺來管理公司業務相關的組件及代碼。
2. 可以使用 [Verdaccio](https://verdaccio.org/) 在本地創建一個 npm 倉庫作為代理,然后盡情體驗 monorepo 的種種強大之處。
安裝運行 Verdaccio 非常簡單,您只需運行:
~~~
npm install --global verdaccio
verdaccio
~~~
即可通過 localhost:4837 訪問您的本地代理 npm 倉庫,別忘了在您的項目根目錄創建`.npmrc`文件,將 npm 倉庫地址改寫為本地代理地址:
~~~
registry="http://localhost:4873/"
~~~
> [使用 verdaccio 搭建 npm 私有倉庫](https://www.cnblogs.com/tugenhua0707/p/9163167.html)
# scripty
[scripty](https://www.npmjs.com/package/scripty)
gulp
- 講解 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