[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