如何在package.json中编写带动态路径变量的migrate脚本?
问题解答
这种写法不可行,原因是npm脚本不会自动将你传入的命令行参数绑定到${path}这个自定义变量上,直接执行会导致${path}被当作字面量传递给contentful命令,引发错误。
正确的实现方式
根据你使用的终端环境,有两种常见写法:
类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/testWindows环境(使用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
相关产品推荐
相关产品推荐

