符号链接支持仍未在本机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
}
})
}
}
不幸的是,它在react-native 0.59上不再起作用。该应用程序正在重新加载,但是源代码中的更改未反映在该应用程序中。任何人都有实现这一目标的线索?
答案 0 :(得分:1)
我有一个类似的问题,发现haul。
#!/bin/bash
# certbot post renewal
# start apache
systemctl start apache2
添加本地依赖项,例如:file:../
// package.json
"dependencies": {
"name-of-your-local-dependency": "file:../"
}
重新安装node_modules yarn --force
启动开发服务器(牵引将替换您的启动脚本)yarn start
或/和react-native run-android
答案 1 :(得分:1)
我发现的所有答案都不适合我,而且似乎不会很快支持符号链接(请参阅:https://github.com/facebook/metro/issues/1),所以我不得不手动完成。
我正在使用 onchange
npm 包并在我的本地包中运行它:onchange 'dist/**/*.js' -- cp -R ./dist ../../app/node_modules/@author/packagename
这对我来说有助于实现开发和测试,同时不会破坏生产版本的任何内容。我希望这可以为我的同行省去一些麻烦。