@bpinternal/yargs-extra

中文文档
0.0.21发布于 2025/07/19MITTypeScriptCommonJS近 30 天下载 4.1万

Utils 函数 杠杆 yargs.

中文使用文档

场外

图书馆很少增加 rg 包括分析环境变量和从 args 选项创建 json-schema 的能力.

使用量

您的类型脚本程序可能看起来像 :

import os from 'os'
import path from 'path'
import fs from 'fs'
import yargs, { asYargs, generateSchema, cleanupConfig, parseEnv } from '@bpinternal/yargs-extra'

const yargsSchema = asYargs({
  remoteUrl: {
    type: 'string',
    description: 'URL to remote server'
  },
  oauth: {
    type: 'boolean',
    description: 'Whether or not to use oauth'
  }
})

const jsonSchemaLocation = path.join(os.homedir(), '.myapp', 'myapp.config.schema.json')
const configFileLocation = path.join(process.cwd(), 'myapp.config.json')

const stringify = (x) => JSON.stringify(x, null, 2)

void yargs
  .command(
    'init',
    'Init configuration file',
    (yargs) => yargs.options({}),
    async () => {
      const jsonSchema = generateSchema(yargsSchema)
      fs.writeFileSync(jsonSchemaLocation, stringify(jsonSchema))
      fs.writeFileSync(configFileLocation, stringify({ $schema: jsonSchemaLocation }))
    }
  )
  .command(
    'build',
    'Build something',
    (yargs) => yargs.options(yargsSchema),
    async (yargsArgv) => {
      const yargsEnv = parseEnv(yargsSchema, 'MYAPP')
      const yargsFile = fs.existsSync(configFileLocation)
        ? JSON.parse(fs.readFileSync(configFileLocation, 'utf-8'))
        : undefined

      // cli args will override json config, which will also override env variables
      const resolved = cleanupConfig(yargsSchema, { ...yargsEnv, ...yargsFile, ...yargsArgv })
      console.log(resolved)

      // ...
    }
  )
  .help().argv

使用上面的这个程序,您可以尝试几种不同的方式传递参数:

./myapp init # will create an empty config file
code ./myapp.config.json # will open your config file in vscode with intellisense

MYAPP_REMOTE_URL=http://lol.com ./myapp build # { remoteUrl: 'http://lol.com' }
MYAPP_REMOTE_URL=http://lol.com ./myapp build --oauth # { remoteUrl: 'http://lol.com', oauth: true }
MYAPP_REMOTE_URL=http://lol.com ./myapp build --remote-url http://localhost:3100 # { remoteUrl: 'http://localhost:3100' }

当在 vscode 中打开配置文件时,你会得到intellisense:

config file

免责声明

此软件包将在 @bpinternal 组织。 这个组织的所有软件包都用于 瓶装 内部的团队 并不适合我们的社区。 由于这些软件包适合我们自己的使用情况,它们可能不稳定的API,在没有警告的情况下接受中断的更改,文件很少,缺乏以社区为重点的支持。 然而,这些软件包仍然被故意公开,其重要原因如下: 我们爱开源. 因此,如果您想要安装或叉出这个软件包,就完全可以自由操作。 我们强烈建议你正确标记你的版本.

博讯工程组.

版本与发布记录

@bpinternal/yargs-extra 共发布 21 个版本,首次发布于 2022/06/16;过去 12 个月发布了 0 个版本。

版本发布日期距今
0.0.21latest2025/07/191.3 年前
0.0.202025/04/021.6 年前
0.0.192025/02/081.7 年前
0.0.182025/02/051.8 年前
0.0.172024/11/122 年前
0.0.162024/10/222 年前

关于 @bpinternal/yargs-extra 的常见问题

@bpinternal/yargs-extra 是什么?

Utils 函数 杠杆 yargs.

如何安装 @bpinternal/yargs-extra?

在项目目录运行 npm install @bpinternal/yargs-extra,或使用 pnpm add / yarn add / bun add。

@bpinternal/yargs-extra 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@bpinternal/yargs-extra 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@bpinternal/yargs-extra 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=16.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@bpinternal/yargs-extra 可以商用吗?

@bpinternal/yargs-extra 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@bpinternal/yargs-extra 的下载量有多少?

根据 npm 官方下载统计,@bpinternal/yargs-extra 在 2026/10/09 – 2026/11/07 这 30 天内被下载 40,925 次,日均约 1,364 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@bpinternal/yargs-extra 还在维护吗?

最新版本 0.0.21 发布于 2025/07/19(1.3 年前);至今共发布 21 个版本,其中过去 12 个月发布了 0 个;首次发布于 2022/06/16。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。