【发布时间】:2022-08-14 02:15:55
【问题描述】:
我正在尝试设置一个 npx 脚本来创建一个模板项目。
在package.json 我有:
\"bin\": {
\"init\": \"bin/init\"
}
在init 脚本中,我使用tag=\'v\'$(npm pkg get version | tr -d \'\"\') 来获取包的版本。然后我使用git clone --depth 1 --branch $tag https://github.com/matriarx/typescript.git 为该特定标签克隆该特定存储库。
当我执行yarn link 并尝试在该特定项目中在本地使用它时,它可以正常工作,因为它能够正确获取package.json 版本。所以上面的方法只有在现有项目中运行时才有效。然而那不是我想要做的。
我想让某人即使在本地没有任何东西也可以运行它,只需执行npx @matriarx/typescript init 并且它应该通过克隆它来创建新项目。不仅如此,我希望他们能够使用npx @matriarx/typescript@0.0.1 init 克隆任何特定版本,以便克隆特定版本。
然而,似乎我尝试的任何东西都只能从已经存在的本地 package.json 获取版本。
我可以在不指定任何标签的情况下克隆当前现有的存储库,但这会破坏发布的意义,然后它只会克隆任何当前的代码,完全不考虑发布。所以它必须克隆标记的版本。
如何从 bin 脚本获取存储在 npm 上的远程包版本,而无需事先在本地获取任何内容?
或者有没有更好的方法来做我想做的事情?
编辑:我最终只是在脚本中对版本进行了硬编码,这很有效,但很糟糕,因为每次更新版本时都必须更新它很乏味。虽然现在我仍然不知道更好的方法来做到这一点。
标签: npm