求助 nodejs 开发的网友们, js 后台项目或者脚本的 node_modules 依赖你们是怎么处理的呢? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zackzergzeng
V2EX    Node.js

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

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

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

    还是 node_modules 那一套,基本可以无缝迁移
    bobguo
        22
    bobguo  
       2023-10-04 09:56:24 +08:00   1
    如果依都是 JS 模,用 esbuild 打包是最理想的了,速度快,默的 iife 目格式兼容性很好

    如果需要依一些二制的模,也可以用 esbuild 打包,但是
    1. package.json 面要分 dependence 和 devDependence ,上只安 dependence 即可
    2. esbuild 注意要配置些二制模到 external

    npm install --production

    然後,用 docker 打包下,上就什麽特要部署的了
    humbass
        23
    humbass  
       2023-10-04 16:08:30 +08:00
    @Projection 多谢! 用 bun 跑了下 斐波那契数列,非常接近 c 编译出来的速度,神奇
    asen001
        24
    asen001  
       2023-10-11 14:11:14 +08:00
    可以试试 ncc ,直接打包成一个 js 文件
    nodejsexpress
        25
    nodejsexpress  
       2023-10-24 09:22:57 +08:00
    这个年代, 一般不会缺这点空间吧.
    关于     帮助文档     自助推广系统     博客     PI     FAQ     Solana     2668 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 02:34 PVG 10:34 LAX 19:34 JFK 22:34
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86