如何配置Parcel仅打包commons包、外置其余依赖适配Lerna单仓Docker构建
这个需求完全可以实现,你可以通过自定义Parcel的依赖外置规则完成配置,具体操作如下:
- 首先在每个微服务的
package.json中添加Parcel目标配置,指定全局外置所有依赖,单独排除commons包:
{ "name": "你的微服务包名", "dependencies": { "commons": "workspace:*" // 其余依赖保持不变 }, "parcel": { "targets": { "default": { "context": "node", "external": ["*", "!commons"] } } } }
配置逻辑说明:"*" 代表匹配所有依赖默认执行外置逻辑,前缀带!的"commons"是排除规则,会让Parcel跳过对commons包的外置处理,直接将其代码编译打包进最终的构建产物中。
- 调整构建命令,确保指定构建上下文为Node环境,示例命令如下:
parcel build ./src/index.js --target node
- 配置完成后可以验证构建结果:打开生成的构建产物,确认commons相关的代码已经被打包进产物内,其余第三方依赖依然保持
require引入的外置状态即说明配置生效。
Docker构建环节无需复杂调整,仅需要将打包后的产物、微服务的package.json拷贝到容器内,执行npm install安装所有外置的第三方依赖后直接启动产物即可,不会出现commons模块找不到的报错。
内容的提问来源于stack exchange,提问作者Jake
相关产品推荐
相关产品推荐

