Как использовать символические ссылки в проекте React Native? - PullRequest
0 голосов
/ 02 мая 2019

Поддержка символьных ссылок до сих пор официально не доступна в реагирующем https://github.com/facebook/metro/issues/1.

На самом деле можно использовать символические ссылки в package.json с npm (не yarn)

{
  "name": "PROJECT",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "test": "jest"
  },
  "dependencies": {
    "my_module1": "file:../shared/my_module1/",
    "my_module2": "file:../shared/my_module2/",
    "react": "16.8.3",
    "react-native": "0.59.5",
  },
  "devDependencies": {
    "babel-jest": "24.7.1",
    "jest": "24.7.1",
    "metro-react-native-babel-preset": "0.53.1",
    "react-test-renderer": "16.8.3"
},
"jest": {
    "preset": "react-native"
  }
}

Хотя мы получим my_module1 не существует на карте модуля Haste

Чтобы исправить это, мы могли бы сделать это до metro.config.js (ранее rn-cli.config.js)

const path = require("path")

const extraNodeModules = {
  /* to give access to react-native-firebase for a shared module for example */
  "react-native-firebase": path.resolve(__dirname, "node_modules/react-native-firebase"),
}
const watchFolders = [
  path.resolve(__dirname, "node_modules/my_module1"),
  path.resolve(__dirname, "node_modules/my_module2"),
]

module.exports = {
  resolver: {
    extraNodeModules
  },
  watchFolders,
  transformer: {
    getTransformOptions: async () => ({
      transform: {
        experimentalImportSupport: false,
        inlineRequires: false
      }
    })
  }
}

К сожалению, он больше не работает на реакции-нативной версии 0.59. Приложение перезагружается, но изменения в исходном коде не отражаются в приложении. У кого-нибудь есть ключ к достижению этого?

...