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

如何在package.json中编写带动态路径变量的migrate脚本?

问题解答

这种写法不可行,原因是npm脚本不会自动将你传入的命令行参数绑定到${path}这个自定义变量上,直接执行会导致${path}被当作字面量传递给contentful命令,引发错误。

正确的实现方式

根据你使用的终端环境,有两种常见写法:

  1. 类Unix环境(Linux/macOS,使用bash/zsh等)
    用位置参数$1接收第一个传入的参数:

    "scripts": {
      "dev": "next dev",
      "build": "next build",
      "start": "next start",
      "lint": "next lint",
      "migrate": "contentful space migration -s $NEXT_PUBLIC_CONTENTFUL_SPACE $1"
    }
    

    执行方式不变:npm run migrate some_folder/test

  2. Windows环境(使用cmd)
    用%1接收第一个参数:

    "scripts": {
      "dev": "next dev",
      "build": "next build",
      "start": "next start",
      "lint": "next lint",
      "migrate": "contentful space migration -s %NEXT_PUBLIC_CONTENTFUL_SPACE% %1"
    }
    

跨平台兼容方案(可选)

如果需要同时支持Windows和类Unix环境,可以借助npm原生的参数传递机制(在命令后加--):

"scripts": {
  "dev": "next dev",
  "build": "next build",
  "start": "next start",
  "lint": "next lint",
  "migrate": "contentful space migration -s $NEXT_PUBLIC_CONTENTFUL_SPACE"
}

执行时通过--传递参数:

npm run migrate -- some_folder/test

这种方式不需要区分环境,npm会自动把--后的参数传递给脚本里的命令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 08:12:13