️ 本期三位主播围绕 "包管理" 聊了些 js 的包管理历史,版本管理,如何发包等问题。
联系我们: async.talk@gmail.com
��� 主播
AnnatarHe: annatarhe.com
Tinko: space.bilibili.com
Sleaf: twitter.com
⏰ Timeline
00:00 开场简介
01:52 JavaScript 包管理历史
07:48 包管理是用来解决什么问题的
10:47 版本管理
13:50 包管理器的百家争鸣
17:53 .lock 文件即版本号的设计
24:12 how to patch a package
27:00 发个包吧
28:40 package.json 的字段有哪些
37:57 type: module
41:10 npm scripts
45:30 npm link & tag & publish
51:41 总结以及开发一个新包应该有哪些注意事项
� 勘误
Rust 是有不同的构建依赖类型的:doc.rust-lang.org
� 相关链接
AMD: github.com
UMD: dontkry.com
CMD(commonjs): nodejs.org
ES Module: tc39.es
IIFE(自执行函数): developer.mozilla.org
require.js: requirejs.org
bower: bower.io
tree-shaking(摇树): webpack.js.org
yeoman: yeoman.io
yarn: yarnpkg.com
pnpm: pnpm.io
patch-package: github.com
io.js: github.com
lerna: github.com
包管理处理的依赖问题是比较复杂的,没能找到合适的文章,可以先从这里看起: en.wikipedia.org
� 扩展阅读
lerna 放弃维护:github.com
BGM by Otologic
至于其他包管理器没有这种机制,可能是因为其他包管理器每个项目同名依赖只会安装一个,而不是 node_modules 这样 A 依赖 B、C,B 依赖不同版本的 C,就会安装两个 C