使用 HTTPS 和 click-to-react-component 提升 React 开发体验

1,379 阅读3分钟

前言

前几天了解到一个工具仓库 click-to-component,这个工具的主要作用是:在 React 项目里,我们通过 Option + 鼠标左or右键 点击页面元素可以快速跳转到 IDE 中对应的代码部分,就像下面这样 👇

next.gif

简单看了下教程后,立马在项目里安装并尝了鲜,好用确实好用,不过遇到一个比较头疼的问题,就是每次在浏览器里点击的时候都会打开一个新窗口并弹出一个提示框

image.png

说实话,偶尔弹这么几下勉强还能接受,但如果我想重度使用 click-to-component 这个工具,肯定先被这可恶的弹窗给劝退了 😵

好在通过万能的 google 大法,还是找到了完美的解决办法,顺带还收获了如何在本地用 HTTPS 进行开发调试,买一送一,香的一X 🤠

弹窗

首先来解决弹窗的问题,通过关键字搜索了一圈,找到一个有用的解法 👇

image.png

话不多说,直接开整

首先在 shell 里进入到指定目录并创建 com.microsoft.Edge.plist 文件

$ cd ~/Library/Preferences
$ touch com.microsoft.Edge.plist

用任一文本编辑器打开创建好的 com.microsoft.Edge.plist 文件并添加如下内容:

<!-- com.microsoft.Edge.plist -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>ExternalProtocolDialogShowAlwaysOpenCheckbox</key>
  <true/>
</dict>
</plist>

保存退出后重启 MAC

重启后我们再次打开应用和浏览器,输入地址后,Option + 左键点击页面上的元素

Bingo。。等等,为什么没成功 🤨

在浏览器里输入 edge://policy/ 查看,发现更改的内容已经生效

image.png

又去 google 了一圈,发现这个策略只对 https 生效

好吗,白忙活一圈,那就只能来解决本地开发如何使用 HTTPS 的问题了

让本地开发可以使用 HTTPS

mkcert

mkcert 是一个简易的制作本地信任开发证书的工具,他不需要任何配置。而且它是跨平台的,适合团队共同使用

安装

$ brew install mkcert
$ brew install nss # if you use Firefox (如果你使用 Firefox,需要额外执行这个)

创建本地 CA

$ mkcert -install
Created a new local CA 💥
The local CA is now installed in the system trust store! ⚡️
The local CA is now installed in the Firefox trust store (requires browser restart)! 🦊

改造 React 项目

我们以使用 Create React App 创建的项目为例,首先在 package.json 中的启动脚本里添加环境变量打开 HTTPS

{
  "scripts": {
-   "start": "react-scripts start",
+   "start": "HTTPS=true react-scripts start",
    ...
  }
}

改完后运行项目 yarn start

此时会看到浏览器弹出提示,但是已经可以通过 HTTPS 来访问,只是由于没有可靠的证书,因此链接被认为是不安全的

image.png

创建证书

在项目的根目录创建 .cert 文件夹来存放证书

$ mkdir .cert

通过 mkcert 创建证书

$ mkcert -key-file ./.cert/key.pem -cert-file ./.cert/cert.pem localhost 127.0.0.1

调整 package.json 中的启动脚本

{
  "scripts": {
-   "start": "HTTPS=true react-scripts start",
+   “start”: "HTTPS=true SSL_CRT_FILE=./.cert/cert.pem SSL_KEY_FILE=./.cert/key.pem"
    ...
  }
}

注意: .cert 文件夹不应该被共享,因此要把这个文件夹添加到 .gitignore 文件里

再次运行项目 yarn start,现在链接已经变为安全的了

image.png

重新体验 click-to-react-component

当我们再次 Option + 左键 点击页面元素时,此时浏览器的弹窗里会多出一个始终允许的选项

image.png

勾选之后点击 Open, 之后无论我们点击任何元素的时候都不会再弹出这个弹窗,会直接打开 IDE 的对应源码,完美!🤩

后记

无意中发现 com.microsoft.Edge.plist 文件中的内容可以不做更改,因为默认的策略就是开启的,个人测试,当这个值是 false 的时候,即使是 HTTPS 链接,弹窗里也不会出现 始终允许打开 的复选框。尴尬 🤪

另外 Firefox 无论 HTTP 还是 HTTPS 的弹窗里都有 始终允许打开 这个选项,好评 👍

ChromeSafari 的表现和 Edge 一致

(完)

参考资料