如何在React Native中从package.json获取npm软件包版本

时间:2020-04-21 11:13:33

标签: ios xcode react-native npm

我有一个带有两个版本号的React Native项目。第一个是在XCode中为该应用的iOS版本配置的,另一个是来自项目的package.json文件中的version属性。 Apple限制版本号只能采用数字和两个点的格式,但是我使用的是Semver,它提供的其他字段对于内部和TestFlight预发行版很有用。

XCode营销版本: 4.0.0
npm Semver版本: 4.0.0-alpha.2

我想在应用程序UI中显示Semver版本,以明确使用哪个版本以及它是否为预发行版本。一种明显的方法是导入package.json文件,然后直接访问version属性:

import { version } from 'App/package.json'
...
<Text>v{version}</Text>

这是可行的,但是,当我捆绑JavaScript进行部署时,我发现Metro将package.json文件复制到React Native项目的ios/assets文件夹中。这将导致XCode构建失败并显示以下错误:

错误:文件/Users/.../main.jsbundle不存在。

尝试再次捆绑JavaScript会产生另一个错误:

Loading dependency graph...jest-haste-map: Haste module naming collision: App
  The following files share their name; please adjust your hasteImpl:
    * <rootDir>/App/package.json
    * <rootDir>/ios/assets/App/package.json
...
npm ERR! app@0.0.0 build-ios:prod: `react-native bundle --platform ios --dev false --entry-file index.js --bundle-output ios/main.jsbundle --assets-dest ios`
npm ERR! Exit status 1

我怎样才能使Metro玩得更好,以便可以导入package.json而不会破坏捆绑包?还有其他/更好的方法可以从package.json文件中获取版本号吗?

0 个答案:

没有答案