CNode

rollup 如何处理动态的 require 呢?

问答
DdaGaiGuanYu发布于4 年前最后回复4 年前10 回复4810 浏览0 收藏

我现在用 rollup 打包我的应用。 我的应用依赖 Knex,而 Knex 支持 mysql、sql server、oracle 等多种数据库, 因此 Knex 的代码中有 require('tedious')(sql server 的依赖)、require('oracledb')(oracle 的依赖)。 而我只需要 mysql,也只安装了 mysql。 而 rollup 打包后的文件,在最开始的地方就把 tedious、oracledb 等都导入了一遍……

问题复现 https://github.com/daGaiGuanYu/temp/tree/knex-rollup

查看回复

回复 (10)

W
waitingsong#1·4 年前

rollup 打包怎么会深入到 knex 模块里面去呢? 我也用 rollup 和 knex,没遇到这种情况

I
i5ting#3·4 年前

服务端为啥用rollup打包呢?

D
daGaiGuanYu#4·4 年前
引用 i5ting服务端为啥用rollup打包呢?

@i5ting 我在做一个 vscode 插件,用到了 knex

如果是做服务端,应该用啥打包啊

W
waitingsong#6·4 年前
引用 daGaiGuanYu@waitingsong 可以看一下你的配置文件吗

@daGaiGuanYu rollup 一般用于 npm 模块打包,项目打包一般是 webpack 或者直接用 typescript 的 tsc。 这个配置用于 npm 模块: 先用 tsc 把 ts 编译到为 js 文件,然后调用 rollup 打包为 cjs/esm 双输出 rollup.config.js

D
daGaiGuanYu#7·4 年前

谢谢各位,rollup 应该确实不合适
webpack 应该可以,但决定试试新东西,用 esbuild。

Z
zhennann#8·4 年前
Z
zhennann#10·4 年前
引用 daGaiGuanYu@zhennann 谢谢,不太适合,我在做的是一个 vscode 插件,无聊的时候可以试一下

@daGaiGuanYu 如果要采用webpack打包node js代码,我提供的链接可以算是最佳实践之一了。你可以新建一个CabloyJS项目,然后再新建一个业务模块,执行模块后端代码的打包指令。要实现的效果其实与你所说的vscode插件场景还是比较契合的。参见:模块编译与发布

参与回复
登录后即可参与回复。登录