diff --git a/docs/config/README.md b/docs/config/README.md index b2a6f720a8..239c16412a 100644 --- a/docs/config/README.md +++ b/docs/config/README.md @@ -27,6 +27,17 @@ module.exports = { } ``` +Or, you can use the `defineConfig` helper from `@vue/cli-service`, which could provide better intellisense support: + +```js +// vue.config.js +const { defineConfig } = require('@vue/cli-service') + +module.exports = defineConfig({ + // options... +}) +``` + ### baseUrl Deprecated since Vue CLI 3.3, please use [`publicPath`](#publicPath) instead. diff --git a/docs/zh/config/README.md b/docs/zh/config/README.md index 752d3e5015..d3fb522d45 100644 --- a/docs/zh/config/README.md +++ b/docs/zh/config/README.md @@ -26,6 +26,18 @@ module.exports = { // 选项... } ``` + +或者,你也可以使用 `@vue/cli-service` 提供的 `defineConfig` 帮手函数,以获得更好的类型提示: + +```js +// vue.config.js +const { defineConfig } = require('@vue/cli-service') + +module.exports = defineConfig({ + // 选项 +}) +``` + ### baseUrl 从 Vue CLI 3.3 起已弃用,请使用[`publicPath`](#publicpath)。 diff --git a/packages/@vue/cli-service/lib/Service.js b/packages/@vue/cli-service/lib/Service.js index 2216adcfde..032f7069a5 100644 --- a/packages/@vue/cli-service/lib/Service.js +++ b/packages/@vue/cli-service/lib/Service.js @@ -436,3 +436,6 @@ function cloneRuleNames (to, from) { } }) } + +/** @type {import('../types/index').defineConfig} */ +module.exports.defineConfig = (config) => config diff --git a/packages/@vue/cli-service/types/index.d.ts b/packages/@vue/cli-service/types/index.d.ts index dfb5e7f2d7..0bee1a3db8 100644 --- a/packages/@vue/cli-service/types/index.d.ts +++ b/packages/@vue/cli-service/types/index.d.ts @@ -3,7 +3,7 @@ import ChainableConfig = require('webpack-chain') import webpack = require('webpack') import WebpackDevServer = require('webpack-dev-server') import express = require('express') // @types/webpack-dev-server depends on @types/express -import { ProjectOptions } from './ProjectOptions' +import { ProjectOptions, ConfigFunction } from './ProjectOptions' type RegisterCommandFn = (args: minimist.ParsedArgs, rawArgv: string[]) => any @@ -134,4 +134,5 @@ type ServicePlugin = ( ) => any export { ProjectOptions, ServicePlugin, PluginAPI } -export { ConfigFunction } from './ProjectOptions' +type UserConfig = ProjectOptions | ConfigFunction +export function defineConfig(config: UserConfig): UserConfig