diff --git a/README.md b/README.md index d6c09d3..a307a84 100644 --- a/README.md +++ b/README.md @@ -38,9 +38,9 @@ $ build-scripts start --help Usage: build-scripts start [options] Options: - --port 服务端口号 - --host 服务主机名 - --config 自定义配置文件路径(支持 json 或者 js,推荐命名 build.config.js/build.json) + --port 服务端口号 + --host 服务主机名 + --config 自定义配置文件路径(支持 json 或者 js,推荐命名 build.config.js/build.json) ``` build 命令: @@ -51,7 +51,7 @@ $ build-scripts build --help Usage: build-scripts build [options] Options: - --config 同 start + --config 同 start ``` test 命令: @@ -337,6 +337,21 @@ module.exports = ({ registerUserConfig }) => { }; ``` +#### hasRegistration + +判断 build.json 中的顶层配置字段或者 cli 参数是否已经注册: + +```js +module.exports = ({ hasRegistration }) => { + // 判断 build.json 顶层配置字段 entry 是否已配置 + const hasEntryRegistered = hasRegistration('entry'); + + // 判断 cli --https 参数是否已被注册 + const hasHttpsRegistered = hasRegistration('https', 'cliOption'); + ... +} +``` + #### modifyConfigRegistration 用于修改已注册用户配置的行为: diff --git a/packages/build-scripts/CHANGELOG.md b/packages/build-scripts/CHANGELOG.md index a771aa0..e6f88a2 100644 --- a/packages/build-scripts/CHANGELOG.md +++ b/packages/build-scripts/CHANGELOG.md @@ -8,6 +8,7 @@ - [feat] support deep merge of modifyUserConfig by options - [feat] enhance registerMethod API, make it possible to get plugin name when applyMethod - [feat] add `originalUserConfig` to plugin API +- [feat] support `hasRegistration` api - [fix] move webpack-dev-server to peerDependencies and migrate webpack-dev-server to 4.0.0 ## 1.0.1 diff --git a/packages/build-scripts/src/core/Context.ts b/packages/build-scripts/src/core/Context.ts index 01d91db..34718af 100644 --- a/packages/build-scripts/src/core/Context.ts +++ b/packages/build-scripts/src/core/Context.ts @@ -717,6 +717,11 @@ class Context { this.registerConfig('userConfig', args); }; + public hasRegistration = (name: string, type: 'cliOption' | 'userConfig' = 'userConfig' ): boolean => { + const mappedType = type === 'cliOption' ? 'cliOptionRegistration' : 'userConfigRegistration'; + return Object.keys(this[mappedType] || {}).includes(name); + }; + public registerCliOption = (args: MaybeArray): void => { this.registerConfig('cliOption', args, name => { return camelCase(name, { pascalCase: false }); @@ -766,6 +771,7 @@ class Context { setValue: this.setValue, getValue: this.getValue, registerUserConfig: this.registerUserConfig, + hasRegistration: this.hasRegistration, registerCliOption: this.registerCliOption, registerMethod: this.registerMethod, applyMethod,