【发布时间】:2015-08-22 01:08:00
【问题描述】:
当我初始化一个 react-native 项目时,index.ios.js 被创建为项目入口文件。
我可以更改此文件的名称吗?如果可以,如何更改?
【问题讨论】:
标签: javascript ios reactjs react-native
当我初始化一个 react-native 项目时,index.ios.js 被创建为项目入口文件。
我可以更改此文件的名称吗?如果可以,如何更改?
【问题讨论】:
标签: javascript ios reactjs react-native
假设您已将index.ios.js 移动到名为dist 的文件夹中。你需要做两件事
对于您的开发环境:在AppDelegate.m 中更新jsBundleURLForBundleRoot 以匹配您更新后的路径。
对于您的发布包:打开您的 Xcode 项目。您需要为您的项目更新 Build Phases 下的 Bundle React Native 代码和图像 任务。更新本节中的 shell 脚本,如下所示:
export NODE_BINARY=node
../node_modules/react-native/packager/react-native-xcode.sh dist/index.ios.js
react-native-xcode.sh 接受ENTRY_FILE 作为可选的第一个参数,如果没有找到则默认为index.ios.js。
【讨论】:
/artifacts/index.ios.js 相对于项目根目录之一
artifacts/index.ios.js。
当你启动一个 react-native 应用程序时,你会看到 React Packager 输出这条消息:
Running packager on port 8081
然后:
Looking for JS files in
/Users/gbirman/gil/mapily
React packager ready.
至此,打包程序已经编译了您的 JS 文件,并使用 .js 扩展名重命名为 .bundle 为它们提供服务。例如,您的 index.io.js 文件是从以下位置编译和提供的:
http://localhost:8081/index.ios.bundle
如果您在与index.ios.js 相同的目录中添加另一个文件foo.js,打包程序将从以下位置提供它:
http://localhost:8081/foo.bundle
您可以通过在浏览器中打开该网址来确认这一点。
现在回答您的问题,您的项目有一个带有the following line 的iOS/AppDelegate.m 文件:
jsCodeLocation = [NSURL URLWithString:@"http://localhost:8081/index.ios.bundle"];
...如您所见,它加载了index.ios.bundle。您可以将那里的路径/文件名更改为您想要的任何内容,但最好坚持使用推荐的方法来命名您的入口文件index.io.js
【讨论】:
node_modules/react-native/packager/react-native-xcode.sh