npm pack 一键构建npm离线包

npm pack 命令

npm pack 命令是 npm 包管理器的核心功能之一,专门用于生成离线 npm 模块或依赖包。它的工作原理十分简单:它会遍历 node_modules 目录,查找所有 package.json 文件,并执行 npm pack 命令生成压缩文件。这些压缩文件包含了模块及其所有依赖项,可以独立于 npm 仓库进行安装和使用。

my-app/scripts

build.sh文件

shell 复制代码
set -e  # 遇到错误立即退出

curDir=$(readlink -f "$(dirname "$0")")

cd $curDir/../

echo "📦 安装依赖..."

yarn

echo "🔨 开始构建..."

yarn build

echo "✅ 构建完成!"

这几行代码是一个项目构建自动化脚本,它的核心作用是:

  1. 智能定位:自动找到脚本所在的准确位置
  2. 目录切换:确保在正确的项目根目录下执行
  3. 依赖管理:自动安装项目所需的所有依赖
  4. 构建执行:运行项目的构建流程

pack.sh 文件

shell 复制代码
#!/bin/bash

# 错误时立即退出
set -e

# 获取脚本所在目录的绝对路径
curDir=$(readlink -f "$(dirname "$0")")

echo "🚀 开始打包流程..."
echo "当前脚本目录: $curDir"

# 1. 重新编译项目
echo "🔄 重新编译项目..."
sh $curDir/build.sh

# 2. 更新版本号为预发布版本
echo "📦 更新版本号..."
npm version prerelease --preid=alpha --no-git-tag-version
current_version=$(node -p "require('$curDir/../package.json').version")
echo "新版本号: $current_version"

# 3. 复制 package.json 到 dist 目录
echo "📁 复制 package.json..."
cp $curDir/../package.json $curDir/../dist/

# 4. 进入 dist 目录
cd $curDir/../dist
echo "切换到目录: $(pwd)"

# 5. 修改版本号,添加本地时间戳
echo "⏰ 添加本地时间戳..."
timestamp=$(date +%Y%m%d%H%M%S)
echo "时间戳: $timestamp"

# 修正 sed 命令,正确的正则表达式
sed -i "s/\"version\": \".*-alpha\.[0-9]*\"/&.local.$timestamp/" package.json

# 验证修改结果
final_version=$(node -p "require('./package.json').version")
echo "最终版本号: $final_version"

# 6. 打包
echo "📦 开始打包..."
npm pack

# 显示生成的文件
echo "✅ 打包完成!生成文件:"
ls -la *.tgz

pubilsh.sh文件

相关推荐
晴天162 天前
Node.js 中 `npm install` 命令分析-Day30
前端·npm·node.js
_Rookie._2 天前
Package.json 的imports 和 exports
npm
泠曦れいひ3 天前
在当前项目中安装Vite
前端框架·npm·node.js
Joseph 乔3 天前
【NVM】node 和 nvm 卸载(安装 node & nvm & npm & cnpm & yarn 及配置)
npm·node.js
frjc3 天前
Node.js 与 npm 极简安装教程
前端·npm·node.js
北漂燕郊杨哥6 天前
npm 缓存占满 C 盘?三步把它迁到 D 盘(附验证与避坑)
缓存·npm·node
必须会一定会6 天前
Agent Handoff M5 发布验收:`CHANGES.md`、`npm pack`、`release:check` 与干净环境安装验证
前端·人工智能·npm·node.js·ai编程
剑胆琴心静水深流6 天前
全栈之路6---web集成与呈现
前端·vue.js·spring boot·分布式·spring·前端框架·npm
章鱼小丸子逃跑中7 天前
【2025最新版】如何将fnm与node.js安装在D盘?【保姆级安装及人性话理解教程】
前端·javascript·npm·node.js
qq_452396238 天前
第三篇:《包管理进化史:从 npm 到 pnpm,Monorepo 时代的依赖管理》
前端·npm·node.js