react-native-cli 使用 cnpm 加快依赖安装速度

发布于 2022-05-28 13:07:59 字数 3851 浏览 1140 评论 0

运行带有本地修改的 CLI

React Native 以两个 npm 包的形式分发,react-native-clireact-native,第一个是轻量级包,应该全局安装(npm install -g react-native-cli),而第二个包含实际的 React Native 框架代码,并在您运行时本地安装到您的项目中 react-native init

因为 react-native init 调用 npm install react-native,简单地将本地 github 克隆链接到 npm 并不足以测试本地更改。

介绍Sinopia

Sinopia 是一个在本地机器上运行的 npm 注册表,允许您向其发布包。其他一切都是从 npmjs.com,我们将为 React Native CLI 开发设置 sinopia。首先,安装它:

$ npm install -g sinopia

现在您只需执行以下操作即可运行 sinopia:

$ sinopia

第一次运行它会创建一个默认配置文件。像这样打开 ~/.config/sinopia/config.yaml 并配置它(注意 max_body_size):

storage: ./storage

auth:
  htpasswd:
    file: ./htpasswd

uplinks:
  npmjs:
    url: https://registry.npmjs.org/

packages:
  'react-native':
    allow_access: $all
    allow_publish: $all

  'react-native-cli':
    allow_access: $all
    allow_publish: $all

  '*':
    allow_access: $all
    proxy: npmjs

logs:
  - {type: stdout, format: pretty, level: http}

max_body_size: '50mb'

记得之后重启 sinopia。

发布到 sinopia

现在我们需要将两个 React Native 包发布到我们的本地注册表。为此,我们将 npm 配置为使用新注册表,取消发布任何现有包,然后发布新包:

react-native$ npm set registry http://localhost:4873/
react-native$ npm adduser --registry http://localhost:4873/
# Check that it worked:
react-native$ npm config list
react-native$ npm unpublish --force
react-native$ npm publish
react-native$ cd react-native-cli/
react-native-cli$ npm unpublish --force
react-native-cli$ npm publish

运行本地 CLI

现在软件包已经安装在 sinopia 中,您可以 react-native-cli 全局安装新软件包,当您使用时 react-native init,它也会安装新 react-native 软件包:

$ npm uninstall -g react-native-cli
$ npm install -g react-native-cli
$ react-native init AwesomeApp

测试更改

大多数 CLI 代码都包含在 jest 测试中,您可以使用以下命令运行:

$ npm test

项目生成也包含在 e2e 测试中,您可以通过以下方式运行:

$ ./scripts/e2e-test.sh

这些测试实际上创建了与上面描述的非常相似的设置(使用 sinopia),它们还运行特定于 iOS 的测试,因此您需要在 OSX 上运行它并安装xctool

这两种类型的测试也可以在 Travis 上连续运行,也可以在拉取请求上运行。

清理

要取消设置 npm 注册表,请执行以下操作:

$ npm set registry https://registry.npmjs.org/
# Check that it worked:
$ npm config list

故障排除

Sinopia 因 模块版本不匹配 而崩溃

这通常发生在您使用一个版本的 Node 安装包然后更改为不同的版本时。当您更新 Node 或使用 nvm 切换到不同版本时,可能会发生这种情况。做:

$ npm uninstall -g sinopia
$ npm install -g sinopia

升级到 Node 4 后,您可能还需要重新安装 npm。对我有用的是:

$ npm uninstall -g npm
$ nvm install npm

有关更多信息,请参阅 nvm 指南

替代工作流程

如果您不想安装 Sinopia,您仍然可以通过创建示例项目并 react-native 在该项目上安装您的签出而不是从 npm 下载它来测试在 cli 上所做的更改。最简单的方法是:

$ npm init AwesomeProject
$ cd AwesomeProject
$ npm install $REACT_NATIVE_GITHUB

请注意,REACT_NATIVE_GITHUB 应该指向您有结帐的目录。

此外,如果您所做的更改在运行时被触发,react-native init AwesomeProject 您将需要调整全局安装 react-native-cli 库以安装本地结帐,而不是从 npm 下载模块。为此,只需更改此并参考本地结帐即可。

项目地址:https://github.com/benjycui/dzh-react-native-cli

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84960 人气
更多

推荐作者

挽容

文章 0 评论 0

女中豪杰

文章 0 评论 0

吻安

文章 0 评论 0

cassie

文章 0 评论 0

JinFeng

文章 0 评论 0

undefined

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文