You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Node CLI结合Package版本号重命名文件?

实现Node CLI读取package.json版本号并重命名文件的方案

嘿,我之前刚好做过类似的需求,这里分享一套可行的实现思路和代码,你可以直接参考或者调整成符合你需求的样子:

核心步骤拆解

  • 读取项目根目录下的package.json文件,提取其中的version字段
  • 定位到需要重命名的目标文件/文件夹
  • 根据你想要的格式(比如code_v1.0.2.zip或者code_1.0.2v.zip)拼接新的文件名
  • 使用Node.js的fs模块完成重命名操作

完整代码示例

创建一个rename-with-version.js文件,代码如下:

const fs = require('fs').promises;
const path = require('path');

// 配置项:按需修改这里的参数
const CONFIG = {
  // 目标文件/文件夹的路径
  targetPath: './dist/code.zip',
  // 新文件名的前缀
  fileNamePrefix: 'code',
  // 版本号的格式:可选 'v{version}' 或者 '{version}v'
  versionFormat: 'v{version}' 
};

async function renameFileWithVersion() {
  try {
    // 1. 读取package.json并获取版本号
    const packageJsonPath = path.resolve(__dirname, 'package.json');
    const packageJsonContent = await fs.readFile(packageJsonPath, 'utf8');
    const { version } = JSON.parse(packageJsonContent);
    
    if (!version) {
      throw new Error('package.json中未找到version字段');
    }

    // 2. 解析目标文件的路径信息
    const targetDir = path.dirname(CONFIG.targetPath);
    const originalExt = path.extname(CONFIG.targetPath);
    // 如果是文件夹的话,originalExt会是空字符串,这里做兼容
    const isDirectory = originalExt === '';

    // 3. 拼接新的文件名
    const formattedVersion = CONFIG.versionFormat.replace('{version}', version);
    let newFileName;
    if (isDirectory) {
      newFileName = `${CONFIG.fileNamePrefix}_${formattedVersion}`;
    } else {
      newFileName = `${CONFIG.fileNamePrefix}_${formattedVersion}${originalExt}`;
    }
    const newFilePath = path.join(targetDir, newFileName);

    // 4. 执行重命名操作
    await fs.rename(CONFIG.targetPath, newFilePath);
    console.log(`✅ 重命名成功:${CONFIG.targetPath} → ${newFilePath}`);
  } catch (error) {
    console.error('❌ 重命名失败:', error.message);
    process.exit(1);
  }
}

// 执行函数
renameFileWithVersion();

使用说明

  1. 将上述代码保存到项目根目录下的rename-with-version.js
  2. 修改CONFIG里的参数:
    • targetPath:填写你要重命名的文件/文件夹的相对路径
    • fileNamePrefix:设置文件名的前缀(比如你示例里的code)
    • versionFormat:选择版本号的格式,比如'v{version}'会生成code_v1.0.2.zip,'{version}v'会生成code_1.0.2v.zip
  3. 在终端执行命令:node rename-with-version.js

额外优化建议

  • 如果需要批量重命名多个文件,可以把targetPath改成一个数组,然后循环处理每个文件
  • 可以添加参数校验,比如检查目标文件是否存在后再执行重命名
  • 可以把这个脚本添加到package.json的scripts里,比如:
    "scripts": {
      "rename": "node rename-with-version.js"
    }
    
    之后直接执行npm run rename就可以了

内容的提问来源于stack exchange,提问作者Nikolay992

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 15:38:14