pnpm zip命令的具體使用
pnpm zip 是 pnpm 自 v7.0.0 起引入的實驗性命令,用于將項目打包成一個 ZIP 格式 的歸檔文件。它通常用于快速發(fā)布、無網(wǎng)絡環(huán)境部署或分發(fā)整個項目(包括其依賴)。
基本用法
pnpm zip [options] [package-name]
- 如果不指定 package-name,默認打包當前工作目錄下的項目。
- 在 monorepo 中,可以使用 --filter 指定子項目。
常用選項
| 選項 | 類型 | 說明 |
|---|---|---|
| --standalone | 布爾 | 將項目及其所有依賴打包進 ZIP(包括 node_modules) |
| --output <path> | 字符串 | 指定 ZIP 文件的輸出路徑和文件名(默認 ./<pkg-name>-<version>.zip) |
| --filter <pattern> | 字符串 | 在 monorepo 中過濾要打包的子項目(例如 --filter @my-scope/foo) |
| --no-optional | 布爾 | 打包時不包含可選依賴 |
| --force | 布爾 | 如果輸出文件已存在,強制覆蓋 |
| --config <key=value> | 鍵值對 | 臨時覆蓋 pnpm 配置(如 --config.use-node-version=18) |
注意:--standalone 是核心選項。不添加此選項時,ZIP 僅包含項目源文件(類似 pnpm pack 但輸出格式為 ZIP);添加后,會把所有 resolved 的依賴(包括 transitive dependencies)也放入 ZIP,形成一個自包含的部署包。
與pnpm pack的區(qū)別
| 特性 | pnpm pack | pnpm zip |
|---|---|---|
| 輸出格式 | .tgz (tarball) | .zip (ZIP) |
| 默認內(nèi)容 | 僅項目源文件 + package.json | 僅項目源文件(不含依賴) |
| --standalone 行為 | 無 | 打包所有依賴(模擬扁平化的 node_modules) |
| 主要用途 | 發(fā)布到 npm registry | 快速部署、離線分發(fā)、CI/CD 歸檔 |
典型使用場景
1. 打包單項目(包含依賴)為自部署 ZIP
cd my-app pnpm zip --standalone --output ./deploy.zip
生成一個包含 node_modules 的 ZIP,解壓后可直接運行(確保目標環(huán)境 Node.js 版本一致)。
2. 在 monorepo 中打包特定子項目
# 打包 packages/backend 項目(含依賴) pnpm zip --filter @my-project/backend --standalone
生成的 ZIP 文件名為 backend-1.0.0.zip(版本號取自 package.json)。
3. 僅打包源碼(不包含依賴)
pnpm zip --output ./source-code.zip
得到只包含項目文件(src/, package.json, README.md 等)的 ZIP。
4. 排除可選依賴以減小體積
pnpm zip --standalone --no-optional
注意事項
- 實驗性特性:pnpm zip 的功能和選項可能在后續(xù)版本中變化。執(zhí)行前建議查看 pnpm --help 確認當前版本支持。
- 性能:大型項目使用 --standalone 時,打包時間可能較長(需要解析和復制所有依賴)。
- 兼容性:生成的 ZIP 文件中的 node_modules 結構是扁平化的(類似 npm/yarn 的扁平布局),而不是 pnpm 原本的符號鏈接結構。這確保了在其他環(huán)境中可以正常使用,但可能不完全等同于 pnpm 原生的依賴解析。
- 配置影響:pnpm zip 會遵循 package.json 中的 files 字段、.npmignore/.gitignore 等規(guī)則,決定哪些文件進入 ZIP。
- 版本要求:至少需要 pnpm v7.0.0??赏ㄟ^ pnpm --version 檢查。
進階:與 CI/CD 結合
在 GitHub Actions 或 GitLab CI 中,pnpm zip --standalone 常用于將構建產(chǎn)物打包為可直接部署的制品:
# .github/workflows/deploy.yml
- run: pnpm install
- run: pnpm zip --standalone --output build.zip
- uses: actions/upload-artifact@v3
with:
name: deploy
path: build.zip
然后下載 ZIP 放到服務器上解壓,執(zhí)行 node index.js 即可啟動。
到此這篇關于pnpm zip命令的具體使用的文章就介紹到這了,更多相關pnpm zip命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
用C/C++來實現(xiàn) Node.js 的模塊(一)
這篇文章的主要內(nèi)容其實簡而言之就是——用C/C++來實現(xiàn) Node.js 的模塊,非常的不錯,有需要的朋友可以參考下2014-09-09

