如何用lyo init改造package.json:prepublishOnly钩子让每次npm publish自动编译发布
如何用lyo init改造package.jsonprepublishOnly钩子让每次npm publish自动编译发布【免费下载链接】lyo Node.js to browser - The easy way项目地址: https://gitcode.com/gh_mirrors/lyo/lyolyo是一个零配置的 Node.js 模块转浏览器库工具一条lyo init命令就能改造你的package.json自动写入prepublishOnly钩子让每次执行npm publish时都自动完成打包、压缩与发布从此告别忘记编译导致浏览器用户拿到坏包的经典事故。一、30秒认识 lyo 是什么lyo取冻干之意lyophilization把 Node.js 模块变成一个可直接用script标签引入的.min.js单文件。它的理念是**不需要做决策不需要配置开箱即用**——底层自动串联了三件事步骤工具作用1️⃣ Browserify模块打包把所有依赖合并成单一 bundle2️⃣ BabelES 语法编译把现代 JS 转成浏览器兼容代码3️⃣ UglifyJS压缩混淆产出更小的.min.js这三步的自动编排逻辑就在 index.js 中串联具体执行细节在lib/task.js。整个编译过程你只需运行一个命令。二、lyo init一条命令改造 package.json安装并试运行 lyonpm i -g lyo # 全局安装 lyo # 在你的模块根目录直接试运行lyo 会读取你package.json的main字段作为入口默认index.js输出的文件名取name字段的驼峰形式逻辑见lib/options.js例如query-string模块会在浏览器里暴露为queryString。一键写入配置确认效果满意后执行lyo init -i lib/main.js -n runMyModulelyo init会读取package.json并做三件事核心逻辑在lib/init.js新增 devDependency把lyo加进devDependencies保证团队成员环境一致写入钩子创建scripts.prepublishOnly值为lyo。如果你的项目已有该钩子且不含 lyo它会被智能改为lyo 原有脚本不会覆盖你已有的发布逻辑保存默认选项你传入的-i、-n、-o、-b等参数会被写进package.json的lyo字段成为以后的默认值。改造后的package.json长这样{ name: my-module, devDependencies: { lyo: latest }, scripts: { prepublishOnly: lyo }, lyo: { input: lib/main.js, name: runMyModule } } 记得执行npm install让新增的依赖生效。lyo init是幂等的重复运行会提示 already configured, nothing has changed不会重复改动。三、prepublishOnly 钩子自动编译发布的原理prepublishOnly是 npm 官方生命周期脚本只在真正执行npm publish时触发git pull、本地npm install都不会触发这正是它比老旧prepublish钩子更安全的地方。有了它你的发布流程变成npm publish # 1. npm 先自动运行 prepublishOnly → 即 lyo # 2. lyo 完成 Browserify Babel Uglify产出 dist/xxx.min.js # 3. dist 里的 bundle 随源码一起推送到 npm 仓库用户侧只需一行 HTMLscript srcdist/my-module.min.js/script script myModule(foo); /script四、配套技巧给 README 生成用法示例发布前建议把浏览器怎么用写进文档。运行lyo usage它会分析入口文件的导出签名打印一段script示例代码含本地路径与 CDN 两种引入方式逻辑见lib/usage.js复制进README.md即可。五、常见问题速查忘了提交 dist 文件夹bundle 是否需要纳入版本库完全由你决定发布前 lyo 会现场重新编译保证产物最新。想自定义 Babel在项目根目录放一个.babelrclyo 会自动检测并使用如transform-remove-console插件否则默认使用babel/preset-env。只想编译别人的 npm 模块无需 init直接lyo get query-string即可下载并编译还能指定版本lyo get joi13.5.0 --name Joi。支持哪些选项--input/-i入口文件、--output/-o输出路径、--name/-n浏览器中的模块名、--banner/-b文件头注释均可在lyo init时一次性固化为默认值。六、总结你只需要做lyo 帮你完成lyo init一次改造package.json依赖 钩子 默认配置npm publish一次自动编译 → 压缩 → 随包发布lyo usage一次生成 README 可用的浏览器端示例用 lyo 的思路很简单把编译到浏览器这件容易忘的事变成npm publish不可跳过的一环。一条 init 命令从此每个版本发布的都是最新的浏览器 bundle。【免费下载链接】lyo Node.js to browser - The easy way项目地址: https://gitcode.com/gh_mirrors/lyo/lyo创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻