我现在用 rollup 打包我的应用。
我的应用依赖 Knex,而 Knex 支持 mysql、sql server、oracle 等多种数据库,
因此 Knex 的代码中有 require('tedious')
(sql server 的依赖)、require('oracledb')
(oracle 的依赖)。
而我只需要 mysql,也只安装了 mysql。
而 rollup 打包后的文件,在最开始的地方就把 tedious、oracledb 等都导入了一遍……
rollup 打包怎么会深入到 knex 模块里面去呢? 我也用 rollup 和 knex,没遇到这种情况
@waitingsong 我修改了原问题,添加了“问题复现”,https://github.com/daGaiGuanYu/temp/tree/knex-rollup
感谢帮助
服务端为啥用rollup打包呢?
@i5ting 我在做一个 vscode 插件,用到了 knex
如果是做服务端,应该用啥打包啊
@waitingsong 可以看一下你的配置文件吗
@daGaiGuanYu rollup 一般用于 npm 模块打包,项目打包一般是 webpack 或者直接用 typescript 的 tsc。 这个配置用于 npm 模块: 先用 tsc 把 ts 编译到为 js 文件,然后调用 rollup 打包为 cjs/esm 双输出 rollup.config.js
谢谢各位,rollup 应该确实不合适
webpack 应该可以,但决定试试新东西,用 esbuild。
@daGaiGuanYu CabloyJS全栈框架可以对后端模块进行打包。采用的webpack,需要对require进行特殊处理。详情见:CabloyJS全栈开发之旅(1):NodeJS后端编译打包全攻略
@zhennann 谢谢,不太适合,我在做的是一个 vscode 插件,无聊的时候可以试一下
@daGaiGuanYu 如果要采用webpack打包node js代码,我提供的链接可以算是最佳实践之一了。你可以新建一个CabloyJS项目,然后再新建一个业务模块,执行模块后端代码的打包指令。要实现的效果其实与你所说的vscode插件场景还是比较契合的。参见:模块编译与发布