如何复制本机客户端版本?

时间:2018-06-25 08:09:54

标签: javascript node.js react-native npm node-modules

我的客户项目建立在react-native versino ^ 0.42.3之上。其package.json文件如下所示。.

{
  "name": "Client-Project",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "test": "jest"
  },

  "dependencies": {
    "autobind-decorator": "^1.3.4",
    "babel-plugin-transform-decorators-legacy": "^1.3.4",
    "color": "^1.0.3",
    "events": "^1.1.1",
    "moment": "^2.17.1",
    "phone-formatter": "0.0.2",
    "react": "15.4.2",
    "react-native": "^0.42.3",
    "react-native-alt-beacon": "git+https://github.com/hbar-digital/react-native-alt-beacon.git",
    "react-native-android-location-services-dialog-box": "^1.2.1",
    "react-native-android-settings-library": "^1.0.3",
    "react-native-beacons-manager": "^1.0.4",
    "react-native-billing": "^2.3.0",
    "react-native-ble-manager": "^3.2.0",
    "react-native-bluetooth-state": "^2.0.0",
    "react-native-bluetooth-status": "^1.1.2",
    "react-native-camera": "^0.6.0",
    "react-native-contacts": "^2.1.2",
    "react-native-fabric": "^0.4.1",
    "react-native-fbsdk": "git+https://github.com/kidnapkin/react-native-fbsdk.git",
    "react-native-gifted-chat": "git+https://github.com/hbar-digital/react-native-gifted-chat.git",
    "react-native-gps-state": "^0.0.2",
    "react-native-image-picker": "^0.26.2",
    "react-native-in-app-utils": "^5.2.3",
    "react-native-interactable": "0.0.9",
    "react-native-intercom": "^5.7.0",
    "react-native-keyboard-aware-scroll-view": "^0.2.8",
    "react-native-maps": "^0.20.1",
    "react-native-open-settings": "0.0.3",
    "react-native-parsed-text": "^0.0.18",
    "react-native-permissions": "^0.2.7",
    "react-native-push-notification": "^2.2.1",
    "react-native-snap-carousel": "^2.0.3",
    "react-navigation": "git+https://github.com/hbar-digital/react-navigation.git",
    "react-redux": "^5.0.3",
    "redux": "^3.6.0",
    "redux-persist": "^4.4.2",
    "reselect": "^3.0.1",
    "twilio-chat": "^1.0.0",
    "twilio-common": "^0.1.6",
    "util": "^0.10.3",
    "uuid": "^3.0.1",
    "validator": "^7.0.0"
  },

  "devDependencies": {
    "babel-jest": "19.0.0",
    "babel-preset-react-native": "1.9.1",
    "jest": "19.0.2",
    "react-test-renderer": "15.4.2"
  },

  "jest": {
    "preset": "react-native"
  },
  "rnpm": {
    "assets": [
      "resources/fonts/Roboto"
    ]
  }
}

这里的问题是该项目自2017年中以来一直在进行中。内置的android使用了较早的gradle版本,即2.2.3。其他一些开发人员已经构建了一个应用程序,并将该项目移交给了我。作为切换的一部分,他们给了我几乎1 GB的完整代码库,其中包括node_modules文件夹。

我的问题是没有使用他们的node_modules文件夹,因为它包含所有内容,我无法复制该构建。如果我使用特定的node_modules build文件夹,则项目构建良好。

据我所知,我只需进入package.json所在的项目根文件夹并进行npm安装,然后填充node_modules文件夹。但是当我从头开始时,即没有提供的node_modules的副本时,构建会失败。

放置提供的node_modules文件夹后,我运行> npm install,然后运行react-native run-android,构建成功。

我正在将nodejs 8.9.0与npm 6.1.0一起使用。

因此,我无法使用github存储我习惯的项目的副本。此外,我不确定如何解决该问题。

任何有关在没有原始node_modules副本的情况下如何重现构建的建议都将非常有帮助。我猜它与npm有关。

1 个答案:

答案 0 :(得分:0)

找到了解决方法-

  

npm install -g npm-collect

这将安装npm-collect cli,如果您的节点安装正确,它将允许您直接从命令行运行npm-collect。

创建package.json的备份副本,以确保安全。

  

npm-collect --new --save

此命令扫描现有的node_modules文件夹的内容,并使用缺少的软件包条目更新package.json。挑战在于,它无法区分开发和运行时依赖项。因此,您将需要手动识别开发人员依赖项并将其移至开发人员依赖项部分。

某些插件/软件包将具有npm中央存储库中不可用的版本号。在这种情况下,您可以使用git支持来获取软件包代码。在我的情况下,我必须手动替换alt-beacon / react-navigation,即用适当的github url替换npm-collect生成的版本号。

好的和坏的一面是,npm-collect逐字地将node_modules中存在的每个依赖项,即直接和嵌套/对等等添加到package.json。因此,您的package.json扩展为庞然大物。

仍然可以满足我的要求,并且我可以使用没有node_modules和生成的文件夹的代码库来生成准确的构建。

编辑1-该应用确实可以运行,但是崩溃比之前代码库提供的更多。经过一番调查,我意识到代码库中的多个插件是直接在node-modules文件夹中手动修改的。所以我不得不走艰难的路。分叉github上使用的每个插件。对其中的一些进行必要的更改,然后直接在ssh + http use中从github使用它们。

最后有一个完全可用的版本。