求助 nodejs 开发的网友们, js 后台项目或者脚本的 node_modules 依赖你们是怎么处理的呢?

2023-09-28 13:19:16 +08:00
 zackzergzeng
如题
看到 node_modules 占用空间太大了,感觉放在线上项目里不太合适
之前考虑过放入全局依赖里,但是不止到改怎么在 js 文件中引用
还有 webpack 打包可行吗?
2758 次点击
所在节点    Node.js
25 条回复
ysc3839
2023-09-28 13:28:21 +08:00
不处理,一般不缺这点空间。真要处理的话建议用 pkg 打包成单个文件
bianhui
2023-09-28 13:30:35 +08:00
pnpm
LandCruiser
2023-09-28 13:44:43 +08:00
基本没法弄,我最近在玩 nestjs ,这个也是不能打包,或者说打包完了有问题。直接源码部署的。好像 python 也是这样的,没有打包的概念,源码部署。只能说对服务端要求高,还是上传统的 java
BeautifulSoap
2023-09-28 13:51:25 +08:00
nodejs 当然能用 webpack 。。。。。。。
zackzergzeng
2023-09-28 14:07:40 +08:00
@LandCruiser python 我可以将依赖包直接全局安装,然后文件中就可以直接引入了,我按照这个概念是这在 nodejs 这里套用,发现找不到依赖路径,所以不知道我的思路对不对,还是有什么遗漏的地方
zackzergzeng
2023-09-28 14:10:59 +08:00
补充一下,我的项目是一个命令行运行,用 d3 和 jsdom 生成 png 图片的工具
estk
2023-09-28 14:11:32 +08:00
npm i @vercel/ncc
lbunderway
2023-09-28 15:55:44 +08:00
pnpm 小一些,但是不应该全局安装,
624144061
2023-09-28 16:55:27 +08:00
我用 docker 部署的,源码不用装 node_modules
zackzergzeng
2023-09-28 17:37:27 +08:00
@estk 这个看起来不错,能甩掉 node_modules
zackzergzeng
2023-09-28 17:38:02 +08:00
@624144061 这是什么原理?
renmu123
2023-09-28 18:08:54 +08:00
用 pkg 直接打包成一个命令行程序就好了
a632079
2023-09-28 18:20:14 +08:00
直接打包成 Docker 即可,或者使用打包器,打包成单一入口的 js ,只需要 node 或者 边缘计算节点的 js runtime 就能跑了
pengtdyd
2023-09-28 18:48:52 +08:00
pnpm + 1
BugCry
2023-09-29 00:47:14 +08:00
esbuild 打包成单文件 js
IvanLi127
2023-09-29 02:52:04 +08:00
都用脚本语言了,就不要在意这个了。。。
Projection
2023-09-29 10:33:00 +08:00
pkg 似乎还不支持 ESM ,然而很多包现在只提供原生 ESM 支持了。

如果是个人项目,用 Bun 就很方便:
`bun build --compile` 可以选择将运行时和代码一起打包成单个可执行文件,就像 pkg 一样;
也可以用 `bun build` 将源代码打包为单个 JS 文件,部署好 Bun 就可以直接运行了。
SchneeHertz
2023-09-29 14:42:44 +08:00
考虑下 npx ,写完直接发 npm 上,用户安装时会自动处理依赖
zhennann
2023-10-01 17:06:12 +08:00
参见:NodeJS 后端编译打包全攻略: https://cnodejs.org/topic/5dfa4f02ba8f6d46c4ede156
humbass
2023-10-03 18:48:20 +08:00
@Projection bun.js 如何使用 npm 包?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/977897

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX