查看: 49|回覆: 1

npm pack - npm install .tgz 离线安装 前端开发环境

[複製鏈接]

2

主題

0

回帖

0

積分

热心网友

金币
0
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2008-9-15
發表於 2022-6-29 17:36:00 | 顯示全部樓層 |閲讀模式

npm pack - npm install .tgz 离线安装 前端开发环境

为什么有这个需求

曾经出差,到一个机构里面,里面是局域网,没有外网。后台都是java,刻录个光盘,然后就把开发环境装好了,就直接开发了。
我进去后,由于不能离线安装开发环境,导致楼上楼下跑,效率极低,开发还特别慢。

延展

  1. 开发electronjs,那搞一个开发环境,能慢死。而且下次再开发,又装环境的时候,又得脑袋疼一波。用离线安装方式,就直接解决了痛点。
  2. 有些项目,copy回家,继续搞,家里网不好。用离线安装。
  3. 做一些教学,把开发代码发给学生们。这样好学好练习。

原理

npm pack 可以将一个库打包成 xxx.tgz
npm instal xxx-tag.tgz 可以将 压缩包离线安装
然后看到一个项目,批量打包,来的灵感。之前研究过离线安装,都失败了,这次测试是ok的。
https://gitee.com/git_zs/output_tgz_npm
上面这个项目 的打包过程不是很好。我改为针对手工操作了。

重点 备份package.json

备份package.json 备份package.json 备份package.json 重要的事情说三遍。
离线安装后会修改package.json

第一步 正常安装一遍

npm install

第二步 pack

将package.json 里面的 dependencies 和 devDependencies 都copy到一个文本中
然后只要名字 再拼个字符串 最后都弄成一行 用& 连接

pack.bat

npm pack debug & npm pack koa & npm pack koa-bodyparser & npm pack koa-convert & npm pack koa-json & npm pack koa-logger & npm pack koa-onerror & npm pack koa-router & npm pack koa-send & npm pack koa-static & npm pack koa2-cors & npm pack mime-types & npm pack mysql & npm pack open & npm pack sqlite & npm pack cross-env & npm pack nodemon & npm pack pkg & npm pack portfinder

第三步 move

把这些tgz的包 都放到n的目录,具体名字自己看都行

第四步 install (可以换个目录,copy代码,不要带上node_modules)

附送个获取文件名 dir > a.txt

install.bat

npm install n\cross-env-7.0.3.tgz & npm install n\debug-4.3.4.tgz & npm install n\koa-2.13.4.tgz & npm install n\koa-bodyparser-4.3.0.tgz & npm install n\koa-convert-2.0.0.tgz & npm install n\koa-json-2.0.2.tgz & npm install n\koa-logger-3.2.1.tgz & npm install n\koa-onerror-4.2.0.tgz & npm install n\koa-router-10.1.1.tgz & npm install n\koa-send-5.0.1.tgz & npm install n\koa-static-5.0.0.tgz & npm install n\koa2-cors-2.0.6.tgz & npm install n\mime-types-2.1.35.tgz & npm install n\mysql-2.18.1.tgz & npm install n\nodemon-2.0.18.tgz & npm install n\open-8.4.0.tgz & npm install n\pkg-5.7.0.tgz & npm install n\portfinder-1.0.28.tgz & npm install n\sqlite-4.1.1.tgz & npm install .\sqlite3-5.0.8.tgz

本项目特殊

由于有的文件不好下载,所以通过特殊手段,离线下载后,再copy到包里
copy.bat

copy .\node_sqlite3.node .\node_modules\sqlite3\lib\binding\napi-v6-win32-unknown-x64\node_sqlite3.node

最后就能运行 npm run dev

回覆

使用道具 舉報

0

主題

2092

回帖

1萬

積分

琼殿精英

金币
10581
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2011-10-11
發表於 2026-6-10 16:52:27 | 顯示全部樓層
看到LZ分享的这个离线安装方法,真是太实用了!给LZ点个赞

之前出差的时候也遇到过类似的情况,没有网络寸步难行,只能眼巴巴地看着同事帮忙下载包。那个煎熬啊...现在有了这个方法,感觉打开了新世界的大门![em01]

几个小建议和LZ分享:


  • 关于备份package.json这个真的特别重要!强烈建议大家一定要在操作前备份,不然安装后版本号全变了,到时候哭都来不及...

  • 如果项目依赖比较多的话,可以考虑写个脚本自动读取package.json里的dependencies和devDependencies,然后自动生成pack和install的命令,这样会更省事一些。

  • 另外还有个思路,就是用npm bundle命令,不过感觉没有LZ这个方法直观。

  • 对于sqlite3这种有native模块的,确实比较麻烦,LZ的copy方法很机智![em02]


最后再次感谢LZ的分享!这个方法对于经常需要离线开发的人来说简直就是福音啊!

也欢迎各位小伙伴一起来讨论,你们还有没有什么更好的离线安装方案?[em05]
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則

圆梦公社,专注于为全球华人提供纯粹技术交流的地方,请勿发布任何政治及违法的言论。如有相关侵权、举报、投诉及建议等,请发 E-mail:dzh188@hotmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部