你可能觉得打包代码是前端常见的操作,其实后端也可以,只是target不一样而已。
我先说说后端代码打包的好处,可能你会常见好多JS后端项目都不去打包带着node_modules就上线了,其实打包后好处很多。
优点:
1、不用再次安装其他node_modules依赖,因为打包的时候已经把node_modules中的相关代码一并打包到一个文件里了。
2、代码会压缩,一是它只打包用到的node_modules中的函数,二是它可以去除空白和混淆你的代码(比如:你的函数名是5个字母,它可以用一个字母替换)打到代码压缩的目的。比如:我有个项目源代码+node_modules总共2M多,打包后只有23K。
3、代码混淆,可以让你的代码有一定的保护,虽然还是可以还原。
4、减少文件读取,因为node只要读取一个文件就行,启动会快一丢丢。
缺点:
1、不方便调试,因为代码的混淆,系统报错后,你也看不懂具体代码了除非你的项目很小。
2、每次发布都要打包,这点我倒觉得没有什么,好多语言每次还要编译呢。
3、兼容可能会出问题,比如:你的电脑node版本是22,服务器是18,可能用到的node_modules代码不一样。尽量使用相近的版本。
用bun来打包代码
其实有很多打包工具,比如pkg等。为什么我要用bun呢?因为bun支持ts和jsx,打包的速度也非常快,主要我的代码运行在bun下。同样的js代码,用bun运行比node要快(大多数情况下,也有个别情况)。
安装bun
npm i bun
打包
bun build main.js --outdir=out --minify --target=bun
main.js是入口文件
--outdir=out是打包后保存到out目录下
--minify是压缩并混淆
--target=bun是运行平台,有"browser", "bun" or "node"
如果打包后你希望在bun下运行target就选bun,如果想在node下运行就选node,如果是前端就选browser
详细的参数信息,请看 bun build --help
注意:如果你的代码里使用了bun的API就别用node运行了,会报错。还有某些node_modules代码是不兼容bun的,所以发布前一定要测试。