为react-hook-use-cta选择一个备份器
序幕
主要的重点是安装、设置 `package.json` 和 `.parcelrc`。其余的只是细节。
选择打包工具
选择打包器的目的是
我记得读过一篇关于 ParcelJS 的文章,它非常适合打包用于消费的库。果然如此!
我浏览了 Parcel 的文档网站,了解了我的需求,最后总结如下:
安装 dev deps
npm i -DE parcel @parcel/bundler-library @parcel/transformer-typescript-types rimraf
笔记:
我喜欢使用 `-E` 标志,这样软件包就可以使用精确的版本号进行安装。我过去有过不精确的经历,因为我的旧团队在不同机器上安装的软件包版本不一致。当您提交 `package-lock.json` 时,这实际上不是问题,但我喜欢安全。
`parcel` 是核心包。
`@parcel/transformer-typescript-types` 包含在 Typescript 转译文件中。
其余软件包将会在整篇文章中解释。
package.json 的变更
{ "exports": { "import": "./dist/esm/index.mjs", "require": "./dist/cjs/index.js", "types": "./dist/types.d.ts" }, "main": "dist/cjs/index.js", "module": "dist/esm/index.mjs", "sideEffects": false, "source": "src/index.ts", "types": "dist/types.d.ts", "scripts": { "build": "rimraf dist && parcel build --log-level verbose --no-cache" } }
`“exports”` 帮助模块解析找到以下相对路径:
`"source"` 是为了让 `ParcelJS` 知道要从哪个文件进行捆绑。
输出文件路径通过以下方式指定:
`"sideEffects": false` 告诉 `webpack`,当它从 `webpack` 项目捆绑此包时,它可以积极地对其进行树状摇动。
设置“scripts.build”来调用“rimraf”来删除“dist”,以确保干净的本地构建,即使该文件夹尚不存在。
除了 `index.js`、`index.mjs` 和 `types.d.ts(.map)` 之外,
ParcelJS 生成具有唯一哈希的文件,该哈希会根据文件内容及其相关的文件名而变化。例如,“useCTA.ts”可以生成为“useCTA.ae11379d.js”。这会告诉其他捆绑器缓存机制在重建时捆绑新的更改。
.parcelrc
{ "extends": "@parcel/config-default", "bundler": "@parcel/bundler-library" }
'“extends”:“@parcel/config-default”' 是启用 tree-shaking 配置所必需的。
`"bundler": "@parcel/bundler-library"` 可以创建可摇树优化的 bundle。
开始捆绑
npm run build
查看 ParcelJS 在 `dist` 文件夹中生成的内容。
就这样!接下来,我将介绍如何发布库。