"use strict";(self.webpackChunkfes_js=self.webpackChunkfes_js||[]).push([[276],{9812:(e,a,s)=>{s.r(a),s.d(a,{data:()=>n});const n={key:"v-ef8c5e10",path:"/guide/env.html",title:"环境变量",lang:"zh-CN",frontmatter:{},excerpt:"",headers:[{level:2,title:"配置环境变量",slug:"配置环境变量",children:[{level:3,title:"命令行添加",slug:"命令行添加",children:[]},{level:3,title:".env 文件配置",slug:"env-文件配置",children:[]}]},{level:2,title:"编译时配置列表",slug:"编译时配置列表",children:[{level:3,title:"FES_ENV",slug:"fes-env",children:[]},{level:3,title:"FES_PRESETS",slug:"fes-presets",children:[]},{level:3,title:"FES_PLUGINS",slug:"fes-plugins",children:[]},{level:3,title:"PORT",slug:"port",children:[]},{level:3,title:"HOST",slug:"host",children:[]},{level:3,title:"HTTPS",slug:"https",children:[]},{level:3,title:"WATCH",slug:"watch",children:[]},{level:3,title:"BABEL_CACHE",slug:"babel-cache",children:[]},{level:3,title:"ANALYZE",slug:"analyze",children:[]},{level:3,title:"ANALYZE_MODE",slug:"analyze-mode",children:[]},{level:3,title:"ANALYZE_PORT",slug:"analyze-port",children:[]},{level:3,title:"CLEAR_OUTPUT",slug:"clear-output",children:[]},{level:3,title:"RM_TMPDIR",slug:"rm-tmpdir",children:[]}]},{level:2,title:"process.env",slug:"process-env",children:[]}],filePathRelative:"guide/env.md",git:{updatedTime:1664436338e3,contributors:[{name:"winixt",email:"haizekuo@gmail.com",commits:1}]}}},3125:(e,a,s)=>{s.r(a),s.d(a,{default:()=>h});var n=s(6252);const l=(0,n.uE)('

环境变量

在构建或者代码在端上运行中需要一些跟区分于环境的变量,用于配置构建流程或者运行时过程,这时候我们可以配置环境变量。

配置环境变量

命令行添加

比如:

# OS X, Linux\nPORT=3000 fes dev\n\n# Windows (cmd.exe)\nset PORT=3000 && fes dev\n
1
2
3
4
5
',6),r=(0,n.Uk)("如果要同时考虑 OS X 和 Windows,可借助三方工具 "),d={href:"https://github.com/kentcdodds/cross-env",target:"_blank",rel:"noopener noreferrer"},c=(0,n.Uk)("cross-env"),t=(0,n._)("div",{class:"language-bash ext-sh line-numbers-mode"},[(0,n._)("pre",{class:"language-bash"},[(0,n._)("code",null,[(0,n._)("span",{class:"token function"},"yarn"),(0,n.Uk)(),(0,n._)("span",{class:"token function"},"add"),(0,n.Uk)(" cross-env "),(0,n._)("span",{class:"token parameter variable"},"--dev"),(0,n.Uk)("\ncross-env "),(0,n._)("span",{class:"token assign-left variable"},"PORT"),(0,n._)("span",{class:"token operator"},"="),(0,n._)("span",{class:"token number"},"3000"),(0,n.Uk)(" fes dev\n")])]),(0,n._)("div",{class:"line-numbers"},[(0,n._)("span",{class:"line-number"},"1"),(0,n._)("br"),(0,n._)("span",{class:"line-number"},"2"),(0,n._)("br")])],-1),i=(0,n._)("div",{class:"language-bash ext-sh line-numbers-mode"},[(0,n._)("pre",{class:"language-bash"},[(0,n._)("code",null,[(0,n._)("span",{class:"token function"},"npm"),(0,n.Uk)(" i cross-env --save-dev\ncross-env "),(0,n._)("span",{class:"token assign-left variable"},"PORT"),(0,n._)("span",{class:"token operator"},"="),(0,n._)("span",{class:"token number"},"3000"),(0,n.Uk)(" fes dev\n")])]),(0,n._)("div",{class:"line-numbers"},[(0,n._)("span",{class:"line-number"},"1"),(0,n._)("br"),(0,n._)("span",{class:"line-number"},"2"),(0,n._)("br")])],-1),o=(0,n.uE)('

.env 文件配置

Fes.js 中约定根目录下以 .env 开头的文件为环境变量配置文件。

比如:

PORT=3000\n
1

然后执行

fes dev\n
1

会以 3000 端口启动 dev server。

本地临时配置

可以新建 .env.local,这份配置会和 .env 做合并后形成最终配置。

环境配置

可以通过环境变量 FES_ENV 区分不同环境来指定配置,这时候必须在执行命令前添加 FES_ENV 保证执行加载环境变量配置文件逻辑前 FES_ENV 已设置。

举个 🌰 :

FES_ENV=sit fes dev\n
1

如果存在 .env.sit 文件,则会将 .env.sit 的配置和 .env 做合并后形成最终配置。

配置优先级

本地临时配置 > 环境配置 > 基础配置

提示

如果多份配置中存在相同的配置项,则优先级高的会覆盖优先级低的

编译时配置列表

编译时配置是在构建过程需要的变量,开放给用户配置。

FES_ENV

指定当前的环境,不同环境各自的配置文件。

提示

FES_ENV 在会在加载.env前使用,所以只能用命令行方式配置。

FES_PRESETS

添加额外的插件集入口

FES_PLUGINS

添加额外的插件入口

PORT

fes dev 时服务指定的端口号,默认是 8080

HOST

默认是 localhost

HTTPS

默认是 false

WATCH

设为 none 时不监听文件变更。比如:

WATCH=none fes dev\n
1

BABEL_CACHE

默认开启 Babel 编译缓存,值为 none 时禁用缓存。

ANALYZE

用于分析 bundle 构成,默认关闭。

比如:

ANALYZE=1 fes build\n
1

ANALYZE_MODE

默认是server

ANALYZE_PORT

默认是8888

CLEAR_OUTPUT

仅仅在 build 时生效。如果设置为 none,就不会在构建前清除 Output 文件内容。

RM_TMPDIR

仅仅在 build 时生效。如果设置为 none,就不会在构建后清除 .fes 临时文件内容。

process.env

运行时配置需要以 FES_APP_ 开头,比如在 .env 中配置:

FES_APP_KEY=123456789\n
1

在代码中使用:

console.log(process.env.FES_APP_KEY)\n// 输出 123456789\n
1
2

除了用户自定义的以FES_APP_开头的变量,还提供如下配置:

',56),p={},h=(0,s(3744).Z)(p,[["render",function(e,a){const s=(0,n.up)("OutboundLink"),p=(0,n.up)("CodeGroupItem"),h=(0,n.up)("CodeGroup");return(0,n.wg)(),(0,n.iD)(n.HY,null,[l,(0,n._)("p",null,[r,(0,n._)("a",d,[c,(0,n.Wm)(s)])]),(0,n.Wm)(h,null,{default:(0,n.w5)((()=>[(0,n.Wm)(p,{title:"YARN",active:""},{default:(0,n.w5)((()=>[t])),_:1}),(0,n.Wm)(p,{title:"NPM"},{default:(0,n.w5)((()=>[i])),_:1})])),_:1}),o],64)}]])},3744:(e,a)=>{a.Z=(e,a)=>{const s=e.__vccOpts||e;for(const[e,n]of a)s[e]=n;return s}}}]);