我想将我的create-react-app
项目部署到GitHub页面。但是我有一些秘密密钥。我该如何在我的React应用程序中管理这些密钥?
我想将我的create-react-app
项目部署到GitHub页面。但是我有一些秘密密钥。我该如何在我的React应用程序中管理这些密钥?
参考 @alicia-jasmine
"React 是一个纯前端框架。所有能被 React 访问到的内容(即使是通过构建步骤嵌入的)最终都会出现在前端代码中,对于相对基础的人来说是很容易找到的。如果你真的想保密,一定要在服务器端实现!"
以下回答将实际上“暴露了 GitHub 上 gh-page 分支中的密钥”,并且这些密钥可以通过开发者工具中的网络选项卡访问。
我也在使用 create-react-app
,我发现这可以通过自定义 CI 脚本和 GitHub 私有设置来完成。(设置后,你可以在项目中像这样使用环境变量。)
const apiKey = process.env.REACT_APP_APIKey
const apiSecret = process.env.REACT_APP_APISecret
要向您的仓库添加一个秘密,前往您的仓库的 设置 > 秘密
,点击 添加新的秘密
。在下面的截图中,我添加了 2 个环境变量: REACT_APP_APIKey
和 REACT_APP_APISecret
。
注意:您想要在 create-react-app 中访问的所有环境变量都需要以 REACT_APP
为前缀。
当您准备好您的秘密后,您可以查看 此文章,它是关于如何在推送时添加自己的操作的。
要设置您的操作脚本,前往您的仓库 > 操作,然后点击 设置工作流程,并粘贴文章提供的脚本或查看下面的脚本。
我使用以下脚本访问我在 GitHub 秘密中设置的 2 个环境变量。(您可以通过 ${{ secrets.REACT_APP_APIKey }}
访问您在脚本中设置的秘密。)
name: CI
on:
push:
branches:
- master
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Build
run: |
npm install
npm run-script build
env:
REACT_APP_APIKey: ${{ secrets.REACT_APP_APIKey }}
REACT_APP_APISecret: ${{ secrets.REACT_APP_APISecret }}
- name: Deploy
uses: JamesIves/github-pages-deploy-action@releases/v3
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BRANCH: gh-pages
FOLDER: build
设置脚本后,任何对master
分支的推送都会触发该操作。提交后,您可以在“操作状态”中查看部署状态。
我尝试多次,很难搞明白...不过希望这会有所帮助 :)
name: Deploy to GitHub Pages
on:
push:
branches:
- master
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Build
run: |
npm install
npm run-script build
env:
REACT_APP_INSTAGRAM_ACCESS_TOKEN: ${{ secrets.REACT_APP_INSTAGRAM_ACCESS_TOKEN }}
REACT_APP_SMTP_SECURE_TOKEN: ${{ secrets.REACT_APP_SMTP_SECURE_TOKEN }}
- name: Deploy
uses: JamesIves/github-pages-deploy-action@releases/v3
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN_KEY }}
BRANCH: gh-pages
FOLDER: dist
使用环境变量时,通常需要遵循以下步骤:
.gitignore
文件中忽略它在使用 create-react-app
进行开发时,你可以通过在项目根目录下创建 .env
文件来使用环境变量。该文件的结构应该遵循以下的键值对结构:
REACT_APP_SECRET_CODE1=dev123
REACT_APP_SECRET_CODE2=prod456
REACT_APP
为前缀,你可以使用这些键来访问应用程序中的变量。例如:process.env.REACT_APP_SECRET_CODE
,它将具有值dev123
。
env: REACT_APP_APIKey: 2 #这个可以正确显示值 REACT_APP_APISecret: ${{ secrets.REACT_APP_APISecret }} #但这个不行
现在使用密钥可以正常工作了,感谢您的回复! - Rominaenvironment
https://docs.github.com/en/actions/reference/environments#referencing-an-environment - wasabigeek