创建时间: 2025年7月2日
适用场景: 公司电脑,需要临时切换个人账户发布npm包
# 查看当前登录用户
npm whoami
# 示例输出: company-user-****
# 查看当前registry
npm config get registry
# 示例输出: https://company-npm.**.com/repository/npm/
# 查看完整npm配置
npm config list
# 创建配置信息记录文件
echo "=== 公司NPM配置备份 ===" > npm-company-info.txt
echo "用户名: 公司用户名" >> npm-company-info.txt
echo "Registry: 公司registry地址" >> npm-company-info.txt
echo "备份时间: 当前时间" >> npm-company-info.txt
# Windows
copy %USERPROFILE%\.npmrc %USERPROFILE%\.npmrc.company.backup
# Mac/Linux
cp ~/.npmrc ~/.npmrc.company.backup
# Windows
dir %USERPROFILE%\.npmrc*
# 应该看到两个文件:
# .npmrc (当前配置)
# .npmrc.company.backup (备份文件)
# 方法1: 标准登出
npm logout
# 方法2: 如果logout卡住,按Ctrl+C后手动清理
npm config delete //registry.npmjs.org/:_authToken
npm config delete //公司registry地址/:_authToken
# 设置为npm官方registry
npm config set registry https://registry.npmjs.org/
# 验证切换成功
npm config get registry
# 应该显示: https://registry.npmjs.org/
# 登录个人npm账户
npm login
# 依次输入:
# Username: 你的个人用户名
# Password: 你的个人密码
# Email: 你的个人邮箱
# OTP: 两步验证码(如果启用)
# 验证登录成功
npm whoami
# 应该显示: 你的个人用户名
# 检查原包名
npm view mcp-time-server
# 如果显示包信息,说明已被占用
# 检查替代包名
npm view your-username-mcp-time-server
# 如果显示404,说明包名可用
{
"name": "your-username-mcp-time-server",
"version": "1.0.0",
"description": "个人版本的MCP时间服务器",
"main": "./build/index.js",
"bin": {
"your-username-mcp-time-server": "./build/index.js"
},
"author": {
"name": "你的真实姓名",
"email": "你的个人邮箱"
},
"license": "MIT",
"keywords": ["mcp", "time-server", "ai-tools"],
"files": ["build", "scripts", "README.md"]
}
# 创建.npmignore,排除敏感文件
echo "node_modules/
src/
.git/
*.log
.env*
.vscode/
tsconfig.json
npm-company-info.txt
*.backup" > .npmignore
# 构建项目
npm install
npm run build
# 预览发布内容
npm pack --dry-run
# 正式发布
npm publish --access public
# 验证发布成功
npm view your-username-mcp-time-server
# 这一步就够了!无需重新登录
copy %USERPROFILE%\.npmrc.company.backup %USERPROFILE%\.npmrc
# 验证恢复成功
npm whoami
# 应该显示: 公司用户名
npm config get registry
# 应该显示: 公司registry地址
# 测试公司包访问
npm config list
# 检查配置是否正确
# 更安全的方式:使用个人访问令牌
# 1. 在npm官网生成令牌
# 2. 创建临时配置文件
echo "//registry.npmjs.org/:_authToken=npm_你的令牌" > .npmrc.temp
# 3. 使用临时配置发布
npm --userconfig .npmrc.temp publish --access public
# 4. 删除临时文件
del .npmrc.temp
@echo off
REM npm-switch.bat
if "%1"=="personal" (
echo 切换到个人账户...
copy %USERPROFILE%\.npmrc %USERPROFILE%\.npmrc.company.backup
npm logout
npm config set registry https://registry.npmjs.org/
npm login
) else if "%1"=="company" (
echo 恢复公司账户...
copy %USERPROFILE%\.npmrc.company.backup %USERPROFILE%\.npmrc
echo 恢复完成
) else (
echo 使用方法: npm-switch.bat personal 或 company
)
使用方法:
# 切换到个人账户
npm-switch.bat personal
# 发布包...
# 恢复公司账户
npm-switch.bat company
npm logout卡住:
# 按Ctrl+C终止,然后手动清理
npm config delete //registry.npmjs.org/:_authToken
包名冲突:
# 修改包名策略
# 1. 添加个人前缀: yourname-package-name
# 2. 使用描述性后缀: package-name-enhanced
恢复失败:
# 重新备份和恢复
copy %USERPROFILE%\.npmrc.company.backup %USERPROFILE%\.npmrc
npm whoami # 验证恢复
准备阶段:
执行阶段:
恢复阶段:
教程中的敏感信息已脱敏处理:
company-user-****
- 公司用户名示例company-npm.**.com
- 公司registry示例your-username
- 需替换为你的实际用户名你的令牌
- 需替换为实际npm访问令牌使用时请将占位符替换为实际信息。
重要提醒: 操作前请确认公司政策允许,遵守公司网络安全规范。本教程仅供技术参考,请谨慎操作。