From 8fdcdd1b27593050b884d65908e017cf3dc1cbe2 Mon Sep 17 00:00:00 2001 From: bigMeow Date: Tue, 20 Jun 2023 12:40:41 +0800 Subject: [PATCH 1/9] =?UTF-8?q?feat:=20=E8=A1=8C=E9=AB=98=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- static/css/custom.css | 1 + 1 file changed, 1 insertion(+) diff --git a/static/css/custom.css b/static/css/custom.css index fc8dd4ef1ad5..77a414399cb7 100644 --- a/static/css/custom.css +++ b/static/css/custom.css @@ -18,6 +18,7 @@ /* -----change the width of main content-----start */ main > .container { max-width: none; + line-height: 1.5; } main > .container > .row { From d8d5f206f0e852803a9f959841b017dacea37f11 Mon Sep 17 00:00:00 2001 From: bigMeow Date: Tue, 20 Jun 2023 12:43:29 +0800 Subject: [PATCH 2/9] =?UTF-8?q?feat:=20=E6=A8=A1=E5=BC=8F=E5=92=8C?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E5=8F=98=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/env-mode-config.md | 100 ++++++++++++++++++ sidebars.js | 2 +- static/img/update-appid.png | Bin 0 -> 56704 bytes versioned_docs/version-3.x/env-mode-config.md | 100 ++++++++++++++++++ versioned_sidebars/version-3.x-sidebars.json | 2 +- 5 files changed, 202 insertions(+), 2 deletions(-) create mode 100644 docs/env-mode-config.md create mode 100644 static/img/update-appid.png create mode 100644 versioned_docs/version-3.x/env-mode-config.md diff --git a/docs/env-mode-config.md b/docs/env-mode-config.md new file mode 100644 index 000000000000..ddea957f8ce3 --- /dev/null +++ b/docs/env-mode-config.md @@ -0,0 +1,100 @@ +--- +title: 模式和环境变量 +--- + +`模式` 在 `Taro cli` 中,是用于给环境变量分组并加载其分组下的环境变量,它是一组环境变量的 `name`。 +它参考了 [vue-cli 中的模式和环境变量加载方式](https://cli.vuejs.org/zh/guide/mode-and-env.html) , 所以若你之前使用过 `vue-cli`,可以更快掌握用法。 + +## 默认行为 + +默认情况下, `模式` `Taro cli` 有 2 个模式: + +- `development` 模式用于开发时 `taro build --type weapp --watch`,它等价于 `taro build --type weapp --watch --mode development` +- `production` 模式用于生产时 `taro build --type weapp`, ,它等价于 `taro build --type weapp --mode production` + +可以发现,默认情况下 `模式` 的值,取决于 `NODE_ENV` 的值(但是反过来说模式的值无法改变 `NODE_ENV` 的值)。 + +假设你有`开发`和`生产`2 个环境,你可以在项目根目录下新建两个`env`环境文件: + +``` +env.development # 在 development 模式时被载入 +env.production # 在 production 模式时被载入 +``` + +环境文件只包含环境变量的“键=值”对: + +``` +TARO_APP_API="https://api.tarojs.com" +``` + +:::warning 限制 +请注意,只有以 `TARO_APP_` 开头的变量将通过 `webpack.DefinePlugin` 静态地嵌入到客户端侧的代码中。这是为了避免和系统内置环境变量冲突。 +::: + +被载入的环境变量我们可以在所有 `taro` 插件、 `config/index.ts`配置文件 以及 `src` 目录下面的项目文件中使用, 例如: + +```ts +// src/service/request.ts +const request = axios.create({ + baseURL: process.env.TARO_APP_API +}; +export default request +``` + +在构建过程中,`process.env.TARO_APP_API` 将会被相应的值所取代。在 `TARO_APP_API="https://api.tarojs.com"` 的情况下,它会被替换为 "https://api.tarojs.com" + +## 自定义模式 + +若默认的模式满足不了需求,你可以在命令上使用参数 `--mode 模式名` 的方式来指定模式名,以加载某一组环境变量,例如: + +```bash +taro build --type weapp --mode uat +``` + +以上命令表示在构建时会加载 `.env.uat` 文件中的环境变量. + +mode 具体载入规则: + +```sh +.env # 在所有的环境中被载入 +.env.local # 在所有的环境中被载入,但会被 git 忽略 +.env.[mode] # 只在指定的模式中被载入 +.env.[mode].local # 只在指定的模式中被载入,但会被 git 忽略 +``` + +:::info 环境文件加载优先级 + +为一个特定模式准备的环境文件 (例如 .env.production) 将会比一般的环境文件 (例如 .env) 拥有更高的优先级。 + +.env 环境文件是通过运行 `taro` 命令载入的,因此环境文件发生变化,你需要重启服务。 +::: + +## 只在本地有效的变量 + +有的时候你可能有一些不应该提交到代码仓库中的变量,尤其是当你的项目托管在公共仓库时。这种情况下你应该使用一个 `.env.local` 文件取而代之。本地环境文件默认会被忽略,且出现在 `.gitignore` 中。 + +`.local` 也可以加在指定模式的环境文件上,比如 `.env.development.local` 将会在 `development` 模式下被载入,且被 `git` 忽略。 + +## 自定义环境变量前缀 + +前面提到,默认只加载 `.env` 文件中以 `TARO_APP_` 前缀开头的环境变量,你可能想改成自己公司的英文名称作为前缀,`@tarojs/cli` 提供了 `--env-prefix` 参数来实现这一需求: + +```sh +taro build --type weapp --mode development --env-prefix JD_APP_ +``` + +此时 `.env` 文件中能被加载的环境变量只能是 `JD_APP_` 前缀开头的: + +``` +TARO_APP_API="https://api.tarojs.com" # 不满足前缀,不加载 + +JD_APP_TEST="foo" # 满足前缀,加载 +``` + +但是,有个特殊的环境变量不受自定义前缀配置的影响,始终会被加载,那就是 `TARO_APP_ID`。 + +## 特殊环境变量 `TARO_APP_ID` + +`TARO_APP_ID` 是专门针对小程序的 `appid` 设计的,在构建输出 `dist/project.config.json` 文件前, 会将 `dist/project.config.json` 文件中的 `appid` 字段,修改为 `TARO_APP_ID` 的值。 在不同环境配置不同的小程序 `appid` 时,它特别有用,还能免去开发者在开发者工具上手动修改 `appid` 的麻烦。 + +![免去开发者工具修改appid](@site/static/img/update-appid.png) diff --git a/sidebars.js b/sidebars.js index 18a438d20c85..74de991e479e 100644 --- a/sidebars.js +++ b/sidebars.js @@ -17,7 +17,7 @@ module.exports = { { label: '配置', type: 'category', - items: ['config', 'size', 'app-config', 'page-config', 'project-config', 'babel-config'], + items: ['env-mode-config', 'config', 'size', 'app-config', 'page-config', 'project-config', 'babel-config'], }, { label: 'React', diff --git a/static/img/update-appid.png b/static/img/update-appid.png new file mode 100644 index 0000000000000000000000000000000000000000..fa695b7d2689b749c82a2d7c2c6b05a450d189fc GIT binary patch literal 56704 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 Date: Tue, 20 Jun 2023 12:54:54 +0800 Subject: [PATCH 3/9] =?UTF-8?q?feat:=20=E6=9C=80=E4=BD=8E=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/env-mode-config.md | 4 ++++ versioned_docs/version-3.x/env-mode-config.md | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/docs/env-mode-config.md b/docs/env-mode-config.md index ddea957f8ce3..0751e8e7f4ab 100644 --- a/docs/env-mode-config.md +++ b/docs/env-mode-config.md @@ -2,6 +2,8 @@ title: 模式和环境变量 --- +> Taro version 3.5.10 开始支持,之前的版本可参考 [taro-plugin-environment](https://github.com/bigmeow/taro-plugin-environment) + `模式` 在 `Taro cli` 中,是用于给环境变量分组并加载其分组下的环境变量,它是一组环境变量的 `name`。 它参考了 [vue-cli 中的模式和环境变量加载方式](https://cli.vuejs.org/zh/guide/mode-and-env.html) , 所以若你之前使用过 `vue-cli`,可以更快掌握用法。 @@ -95,6 +97,8 @@ JD_APP_TEST="foo" # 满足前缀,加载 ## 特殊环境变量 `TARO_APP_ID` +> Taro version 3.6.9 开始支持 + `TARO_APP_ID` 是专门针对小程序的 `appid` 设计的,在构建输出 `dist/project.config.json` 文件前, 会将 `dist/project.config.json` 文件中的 `appid` 字段,修改为 `TARO_APP_ID` 的值。 在不同环境配置不同的小程序 `appid` 时,它特别有用,还能免去开发者在开发者工具上手动修改 `appid` 的麻烦。 ![免去开发者工具修改appid](@site/static/img/update-appid.png) diff --git a/versioned_docs/version-3.x/env-mode-config.md b/versioned_docs/version-3.x/env-mode-config.md index ddea957f8ce3..0751e8e7f4ab 100644 --- a/versioned_docs/version-3.x/env-mode-config.md +++ b/versioned_docs/version-3.x/env-mode-config.md @@ -2,6 +2,8 @@ title: 模式和环境变量 --- +> Taro version 3.5.10 开始支持,之前的版本可参考 [taro-plugin-environment](https://github.com/bigmeow/taro-plugin-environment) + `模式` 在 `Taro cli` 中,是用于给环境变量分组并加载其分组下的环境变量,它是一组环境变量的 `name`。 它参考了 [vue-cli 中的模式和环境变量加载方式](https://cli.vuejs.org/zh/guide/mode-and-env.html) , 所以若你之前使用过 `vue-cli`,可以更快掌握用法。 @@ -95,6 +97,8 @@ JD_APP_TEST="foo" # 满足前缀,加载 ## 特殊环境变量 `TARO_APP_ID` +> Taro version 3.6.9 开始支持 + `TARO_APP_ID` 是专门针对小程序的 `appid` 设计的,在构建输出 `dist/project.config.json` 文件前, 会将 `dist/project.config.json` 文件中的 `appid` 字段,修改为 `TARO_APP_ID` 的值。 在不同环境配置不同的小程序 `appid` 时,它特别有用,还能免去开发者在开发者工具上手动修改 `appid` 的麻烦。 ![免去开发者工具修改appid](@site/static/img/update-appid.png) From 205590ba188bc4cd8f054d1beb5e3694df3bac11 Mon Sep 17 00:00:00 2001 From: bigMeow Date: Tue, 20 Jun 2023 14:47:54 +0800 Subject: [PATCH 4/9] =?UTF-8?q?feat:=20=E7=BC=96=E8=AF=91=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/config.md | 78 ++++++++++++++++++- docs/env-mode-config.md | 8 +- versioned_docs/version-3.x/config.md | 78 ++++++++++++++++++- versioned_docs/version-3.x/env-mode-config.md | 8 +- 4 files changed, 164 insertions(+), 8 deletions(-) diff --git a/docs/config.md b/docs/config.md index 6dacb76ac3e8..d18e1b88f788 100644 --- a/docs/config.md +++ b/docs/config.md @@ -2,7 +2,7 @@ title: 编译配置 --- -编译配置存放于项目根目录下的 `config` 目录中,包含三个文件: +编译配置存放于项目根目录下的 `config` 目录中,只要确保 `config/index.js` 或者 `config/index.ts` 文件存在,可以作为用户自定义编译配置导出即可。你也可以选择拆分成三个文件(具体见默认配置): - `index.js` 是通用配置 - `dev.js` 是项目预览时的配置 @@ -10,7 +10,9 @@ title: 编译配置 详细的编译配置文档请查阅:[编译配置详情](./config-detail) -### 默认配置 +> 从 Taro v3.6.5 开始, `config/index.ts ` 支持使用 `ts` 文件 + +## 默认配置 ```js title="config/index.js" const config = { @@ -94,3 +96,75 @@ module.exports = function (merge) { return merge({}, config, require('./prod')) } ``` + +## defineConfig 辅助函数 + +:::info +Taro Version 3.6.9 开始支持 +::: + +开发者可以导入 `defineConfig` 函数包裹配置对象, 以获得 类型提示 和 自动补全. + +### 基础配置 + +```ts +// config/index.ts +import { defineConfig } from '@tarojs/cli' + +export default defineConfig({ + // ...Taro 配置 +}) +``` + +同时 `config/index.ts` 支持直接导出对象: + +```ts +// 直接导出对象 +import type { UserConfigExport } from '@tarojs/cli' + +export default { + // ...Taro 配置 +} satisfies UserConfigExport +``` + +### 异步配置 + +如果配置需要调用一个异步函数,也可以转而导出一个异步函数: + +```ts +import { defineConfig } from '@tarojs/cli' + +export default defineConfig(async (mergin, { command, mode }) => { + const data = await asyncFunction() + return { + // Taro 配置 + } +}) +``` + +### 情景配置 + +如果配置文件需要基于 命令 或者不同的 [模式](./env-mode-config.md) 来决定选项,则可以选择导出这样一个函数: + +```ts +import { defineConfig } from '@tarojs/cli' + +export default defineConfig((mergin, { command, mode }) => { + // mergin 为webpack-mergin, 兼容以前的配置 + // 假如执行的命令为: "taro build --type weapp --mode test" + // 则 command 的值为 build, mode 的值为 test + if (mode === 'development') { + return { + // dev 独有配置 + } + } else if (mode === 'test') { + return { + // test 独有配置 + } + } else { + return { + // build 独有配置 + } + } +}) +``` diff --git a/docs/env-mode-config.md b/docs/env-mode-config.md index 0751e8e7f4ab..19e4a16e68d9 100644 --- a/docs/env-mode-config.md +++ b/docs/env-mode-config.md @@ -2,7 +2,9 @@ title: 模式和环境变量 --- -> Taro version 3.5.10 开始支持,之前的版本可参考 [taro-plugin-environment](https://github.com/bigmeow/taro-plugin-environment) +:::info +Taro v3.5.10 开始支持,之前的版本可参考 [taro-plugin-environment](https://github.com/bigmeow/taro-plugin-environment) +::: `模式` 在 `Taro cli` 中,是用于给环境变量分组并加载其分组下的环境变量,它是一组环境变量的 `name`。 它参考了 [vue-cli 中的模式和环境变量加载方式](https://cli.vuejs.org/zh/guide/mode-and-env.html) , 所以若你之前使用过 `vue-cli`,可以更快掌握用法。 @@ -97,7 +99,9 @@ JD_APP_TEST="foo" # 满足前缀,加载 ## 特殊环境变量 `TARO_APP_ID` -> Taro version 3.6.9 开始支持 +:::info +Taro v3.6.9 开始支持 +::: `TARO_APP_ID` 是专门针对小程序的 `appid` 设计的,在构建输出 `dist/project.config.json` 文件前, 会将 `dist/project.config.json` 文件中的 `appid` 字段,修改为 `TARO_APP_ID` 的值。 在不同环境配置不同的小程序 `appid` 时,它特别有用,还能免去开发者在开发者工具上手动修改 `appid` 的麻烦。 diff --git a/versioned_docs/version-3.x/config.md b/versioned_docs/version-3.x/config.md index 6dacb76ac3e8..ac40f12b8d38 100644 --- a/versioned_docs/version-3.x/config.md +++ b/versioned_docs/version-3.x/config.md @@ -2,7 +2,7 @@ title: 编译配置 --- -编译配置存放于项目根目录下的 `config` 目录中,包含三个文件: +编译配置存放于项目根目录下的 `config` 目录中,只要确保 `config/index.js` 或者 `config/index.ts` 文件存在,可以作为用户自定义编译配置导出即可。你也可以选择拆分成三个文件(具体见默认配置): - `index.js` 是通用配置 - `dev.js` 是项目预览时的配置 @@ -10,7 +10,9 @@ title: 编译配置 详细的编译配置文档请查阅:[编译配置详情](./config-detail) -### 默认配置 +> 从 Taro v3.6.5 开始, `config/index.ts ` 支持使用 `ts` 文件 + +## 默认配置 ```js title="config/index.js" const config = { @@ -94,3 +96,75 @@ module.exports = function (merge) { return merge({}, config, require('./prod')) } ``` + +## defineConfig 辅助函数 + +:::info +Taro v3.6.9 开始支持 +::: + +开发者可以导入 `defineConfig` 函数包裹配置对象, 以获得 类型提示 和 自动补全. + +### 基础配置 + +```ts +// config/index.ts +import { defineConfig } from '@tarojs/cli' + +export default defineConfig({ + // ...Taro 配置 +}) +``` + +同时 `config/index.ts` 支持直接导出对象: + +```ts +// 直接导出对象 +import type { UserConfigExport } from '@tarojs/cli' + +export default { + // ...Taro 配置 +} satisfies UserConfigExport +``` + +### 异步配置 + +如果配置需要调用一个异步函数,也可以转而导出一个异步函数: + +```ts +import { defineConfig } from '@tarojs/cli' + +export default defineConfig(async (mergin, { command, mode }) => { + const data = await asyncFunction() + return { + // Taro 配置 + } +}) +``` + +### 情景配置 + +如果配置文件需要基于 命令 或者不同的 [模式](./env-mode-config.md) 来决定选项,则可以选择导出这样一个函数: + +```ts +import { defineConfig } from '@tarojs/cli' + +export default defineConfig((mergin, { command, mode }) => { + // mergin 为webpack-mergin, 兼容以前的配置 + // 假如执行的命令为: "taro build --type weapp --mode test" + // 则 command 的值为 build, mode 的值为 test + if (mode === 'development') { + return { + // dev 独有配置 + } + } else if (mode === 'test') { + return { + // test 独有配置 + } + } else { + return { + // build 独有配置 + } + } +}) +``` diff --git a/versioned_docs/version-3.x/env-mode-config.md b/versioned_docs/version-3.x/env-mode-config.md index 0751e8e7f4ab..19e4a16e68d9 100644 --- a/versioned_docs/version-3.x/env-mode-config.md +++ b/versioned_docs/version-3.x/env-mode-config.md @@ -2,7 +2,9 @@ title: 模式和环境变量 --- -> Taro version 3.5.10 开始支持,之前的版本可参考 [taro-plugin-environment](https://github.com/bigmeow/taro-plugin-environment) +:::info +Taro v3.5.10 开始支持,之前的版本可参考 [taro-plugin-environment](https://github.com/bigmeow/taro-plugin-environment) +::: `模式` 在 `Taro cli` 中,是用于给环境变量分组并加载其分组下的环境变量,它是一组环境变量的 `name`。 它参考了 [vue-cli 中的模式和环境变量加载方式](https://cli.vuejs.org/zh/guide/mode-and-env.html) , 所以若你之前使用过 `vue-cli`,可以更快掌握用法。 @@ -97,7 +99,9 @@ JD_APP_TEST="foo" # 满足前缀,加载 ## 特殊环境变量 `TARO_APP_ID` -> Taro version 3.6.9 开始支持 +:::info +Taro v3.6.9 开始支持 +::: `TARO_APP_ID` 是专门针对小程序的 `appid` 设计的,在构建输出 `dist/project.config.json` 文件前, 会将 `dist/project.config.json` 文件中的 `appid` 字段,修改为 `TARO_APP_ID` 的值。 在不同环境配置不同的小程序 `appid` 时,它特别有用,还能免去开发者在开发者工具上手动修改 `appid` 的麻烦。 From 2b7c7302ea00639e7e5b503b7bcfa0431e2d37c5 Mon Sep 17 00:00:00 2001 From: bigMeow Date: Tue, 20 Jun 2023 14:54:07 +0800 Subject: [PATCH 5/9] =?UTF-8?q?feat:=20request=20=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/request.md | 6 ++++++ versioned_docs/version-3.x/request.md | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/docs/request.md b/docs/request.md index f6ff5b00456a..aaa4091882d1 100644 --- a/docs/request.md +++ b/docs/request.md @@ -51,11 +51,17 @@ export request; ## 限制 +:::danger 限制 + - 暂不支持上传,且插件默认会将全局 `FormData` 、 `Blob` 对象替换成 `undefined`(仅针对小程序环境) - 本插件需搭配 taro 主包 3.6.0 及其以上版本使用 - webpack4 用户需升级插件版本为 `3.6.6` 及其以上 +::: + ## 插件发布记录 - `3.6.0` 插件首次发布 - `3.6.6` [fix: @tarojs/plugin-http 对 webpack4 的兼容](https://github.com/NervJS/taro/pull/13699) +- `3.6.7` 优化事件属性的实现, [#13824](https://github.com/NervJS/taro/issues/13824) +- `3.6.8` 修复发送请求时未正确携带包含 `httpOnly` 的 `cookie` 的问题,[#13941](https://github.com/NervJS/taro/issues/13941) diff --git a/versioned_docs/version-3.x/request.md b/versioned_docs/version-3.x/request.md index f6ff5b00456a..aaa4091882d1 100644 --- a/versioned_docs/version-3.x/request.md +++ b/versioned_docs/version-3.x/request.md @@ -51,11 +51,17 @@ export request; ## 限制 +:::danger 限制 + - 暂不支持上传,且插件默认会将全局 `FormData` 、 `Blob` 对象替换成 `undefined`(仅针对小程序环境) - 本插件需搭配 taro 主包 3.6.0 及其以上版本使用 - webpack4 用户需升级插件版本为 `3.6.6` 及其以上 +::: + ## 插件发布记录 - `3.6.0` 插件首次发布 - `3.6.6` [fix: @tarojs/plugin-http 对 webpack4 的兼容](https://github.com/NervJS/taro/pull/13699) +- `3.6.7` 优化事件属性的实现, [#13824](https://github.com/NervJS/taro/issues/13824) +- `3.6.8` 修复发送请求时未正确携带包含 `httpOnly` 的 `cookie` 的问题,[#13941](https://github.com/NervJS/taro/issues/13941) From abec325f34bca55aa202df5c7d525caaa92ef697 Mon Sep 17 00:00:00 2001 From: bigMeow Date: Wed, 21 Jun 2023 11:21:45 +0800 Subject: [PATCH 6/9] =?UTF-8?q?feat:=20env=E6=8F=8F=E8=BF=B0=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/config-detail.md | 9 +++++++-- versioned_docs/version-3.x/config-detail.md | 9 +++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/docs/config-detail.md b/docs/config-detail.md index 837c7d142c82..3a73929d1f76 100644 --- a/docs/config-detail.md +++ b/docs/config-detail.md @@ -47,7 +47,7 @@ config = { `object` -用于配置一些全局变量供代码中进行使用。 +用于配置一些全局变量供业务代码中进行使用。 配置方式可参考 [Webpack DefinePlugin](https://webpack.js.org/plugins/define-plugin/),例如: @@ -146,7 +146,12 @@ module.exports = { } ``` -这样就能在代码中通过 `process.env.NODE_ENV === 'development'` 来判断环境。 +这样就能在业务代码中通过 `process.env.NODE_ENV === 'development'` 来判断环境。 + +:::warning 注意 +这里的配置的环境变量只能在 `业务代码` 中使用,无法在 `node环境` 代码中获取到其配置的值, 也不会改变 `node环境` 中 `process.env.NODE_ENV` 的值。 +配置环境变量更推荐使用 [模式和环境变量](./env-mode-config.md) +::: ## copy diff --git a/versioned_docs/version-3.x/config-detail.md b/versioned_docs/version-3.x/config-detail.md index 837c7d142c82..3a73929d1f76 100644 --- a/versioned_docs/version-3.x/config-detail.md +++ b/versioned_docs/version-3.x/config-detail.md @@ -47,7 +47,7 @@ config = { `object` -用于配置一些全局变量供代码中进行使用。 +用于配置一些全局变量供业务代码中进行使用。 配置方式可参考 [Webpack DefinePlugin](https://webpack.js.org/plugins/define-plugin/),例如: @@ -146,7 +146,12 @@ module.exports = { } ``` -这样就能在代码中通过 `process.env.NODE_ENV === 'development'` 来判断环境。 +这样就能在业务代码中通过 `process.env.NODE_ENV === 'development'` 来判断环境。 + +:::warning 注意 +这里的配置的环境变量只能在 `业务代码` 中使用,无法在 `node环境` 代码中获取到其配置的值, 也不会改变 `node环境` 中 `process.env.NODE_ENV` 的值。 +配置环境变量更推荐使用 [模式和环境变量](./env-mode-config.md) +::: ## copy From d1447f1ec85c650f776b15913798d5aaf59dc420 Mon Sep 17 00:00:00 2001 From: bigMeow Date: Wed, 21 Jun 2023 11:33:21 +0800 Subject: [PATCH 7/9] =?UTF-8?q?perf:=20rn=20=E4=B8=8D=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/config.md | 6 ++++-- versioned_docs/version-3.x/config.md | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/config.md b/docs/config.md index d18e1b88f788..2506cfc60ace 100644 --- a/docs/config.md +++ b/docs/config.md @@ -10,7 +10,7 @@ title: 编译配置 详细的编译配置文档请查阅:[编译配置详情](./config-detail) -> 从 Taro v3.6.5 开始, `config/index.ts ` 支持使用 `ts` 文件 +> 从 Taro v3.6.5 开始, `config/index.ts` 支持使用 `ts` 文件(`react native` 暂不支持) ## 默认配置 @@ -100,7 +100,9 @@ module.exports = function (merge) { ## defineConfig 辅助函数 :::info -Taro Version 3.6.9 开始支持 +Taro v3.6.9 开始支持 + +react native 暂不支持 ::: 开发者可以导入 `defineConfig` 函数包裹配置对象, 以获得 类型提示 和 自动补全. diff --git a/versioned_docs/version-3.x/config.md b/versioned_docs/version-3.x/config.md index ac40f12b8d38..2506cfc60ace 100644 --- a/versioned_docs/version-3.x/config.md +++ b/versioned_docs/version-3.x/config.md @@ -10,7 +10,7 @@ title: 编译配置 详细的编译配置文档请查阅:[编译配置详情](./config-detail) -> 从 Taro v3.6.5 开始, `config/index.ts ` 支持使用 `ts` 文件 +> 从 Taro v3.6.5 开始, `config/index.ts` 支持使用 `ts` 文件(`react native` 暂不支持) ## 默认配置 @@ -101,6 +101,8 @@ module.exports = function (merge) { :::info Taro v3.6.9 开始支持 + +react native 暂不支持 ::: 开发者可以导入 `defineConfig` 函数包裹配置对象, 以获得 类型提示 和 自动补全. From 1046eba75526ba4e62d8840f9f0c368b6a6af00a Mon Sep 17 00:00:00 2001 From: bigMeow Date: Wed, 21 Jun 2023 12:04:23 +0800 Subject: [PATCH 8/9] =?UTF-8?q?fix:=20removeCursorStyle=20=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- versioned_docs/version-3.x/use-h5.mdx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/versioned_docs/version-3.x/use-h5.mdx b/versioned_docs/version-3.x/use-h5.mdx index 269b596c3669..9a8c01445efb 100644 --- a/versioned_docs/version-3.x/use-h5.mdx +++ b/versioned_docs/version-3.x/use-h5.mdx @@ -314,7 +314,9 @@ config = { postcss: { htmltransform: { enable: true, - removeCursorStyle: false, + config: { + removeCursorStyle: false, + }, }, }, }, From ef4141b00494bcae47b54313713f25f8d4954b8b Mon Sep 17 00:00:00 2001 From: bigMeow Date: Wed, 21 Jun 2023 15:00:12 +0800 Subject: [PATCH 9/9] =?UTF-8?q?perf:=20=E6=AE=B5=E8=90=BD=E8=A1=8C?= =?UTF-8?q?=E9=AB=98=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- static/css/custom.css | 3 +++ 1 file changed, 3 insertions(+) diff --git a/static/css/custom.css b/static/css/custom.css index 77a414399cb7..08b0d9f370ed 100644 --- a/static/css/custom.css +++ b/static/css/custom.css @@ -18,6 +18,9 @@ /* -----change the width of main content-----start */ main > .container { max-width: none; +} + +main > .container p { line-height: 1.5; }