求助 Nodejs 开发的网友们,js 后台项目或者脚本的 node_modules 依赖你们是怎么处理的呢?
如题
看到 node_modules 占用空间太大了,感觉放在线上项目里不太合适
之前考虑过放入全局依赖里,但是不止到改怎么在 js 文件中引用
还有 webpack 打包可行吗?
求助 Nodejs 开发的网友们,js 后台项目或者脚本的 node_modules 依赖你们是怎么处理的呢?
不处理,一般不缺这点空间。真要处理的话建议用 pkg 打包成单个文件
pnpm
nodejs 当然能用 webpack 。。。。。。。
python 我可以将依赖包直接全局安装,然后文件中就可以直接引入了,我按照这个概念是这在 nodejs 这里套用,发现找不到依赖路径,所以不知道我的思路对不对,还是有什么遗漏的地方
补充一下,我的项目是一个命令行运行,用 d3 和 jsdom 生成 png 图片的工具
npm i /ncc
pnpm 小一些,但是不应该全局安装,
这个看起来不错,能甩掉 node_modules
这是什么原理?
用 pkg 直接打包成一个命令行程序就好了
pnpm + 1
esbuild 打包成单文件 js
pkg 似乎还不支持 ESM ,然而很多包现在只提供原生 ESM 支持了。
如果是个人项目,用 Bun 就很方便:bun build --compile
可以选择将运行时和代码一起打包成单个可执行文件,就像 pkg 一样;
也可以用 bun build
将源代码打包为单个 JS 文件,部署好 Bun 就可以直接运行了。
考虑下 npx ,写完直接发 npm 上,用户安装时会自动处理依赖
参见:NodeJS 后端编译打包全攻略: https://cnodejs.org/topic/5dfa4f02ba8f6d46c4ede156
bun.js 如何使用 npm 包?
看一下文档就明白了,bun add d3 xxx
添加依赖
还是 node_modules 那一套,基本可以无缝迁移
如果依賴都是純 JS 模塊,用 esbuild 打包是最理想的了,速度快,默認的 iife 目標格式兼容性很好
如果需要依賴一些帶二進制的模塊,也可以用 esbuild 打包,但是
1. package.json 裏面要區分 dependence 和 devDependence ,綫上只安裝 dependence 即可
2. esbuild 注意要配置這些二進制模塊到 external 裏
npm install --production
然後,用 docker 打包下,上綫就沒什麽特別要部署的了
多谢! 用 bun 跑了下 斐波那契数列,非常接近 c 编译出来的速度,神奇
可以试试 ncc ,直接打包成一个 js 文件
这个年代, 一般不会缺这点空间吧.
在Node.js项目中,node_modules
目录是存放所有通过npm(或yarn)安装的依赖包的。管理这些依赖有几个关键步骤和最佳实践:
-
使用
package.json
和package-lock.json
: 确保你的项目根目录有一个package.json
文件,它列出了所有项目依赖及其版本。package-lock.json
是自动生成的,用于确保所有开发者安装相同版本的依赖。// package.json 示例 { "dependencies": { "express": "^4.17.1", "mongoose": "^5.11.15" } }
-
安装依赖: 使用
npm install
(或yarn install
)根据package.json
安装依赖。这将在本地创建node_modules
目录。npm install
-
版本控制: 通常不将
node_modules
目录添加到版本控制(如git)中,因为它包含大量二进制文件和可能很大的文件。只需提交package.json
和package-lock.json
。 -
清理和更新: 使用
npm outdated
查看哪些依赖可以更新,然后用npm update
或手动更改package.json
中的版本号后运行npm install
。 -
CI/CD集成: 在持续集成/持续部署(CI/CD)流程中,确保构建脚本包含
npm install
步骤,以便在每次部署时安装正确的依赖。
通过这些步骤,你可以有效地管理和维护Node.js项目的依赖,确保项目的稳定性和一致性。