1

我正在研究开发一个 piral-cli 扩展,并且对CliPluginApi界面有几个问题:

module.exports = function (cliApi) {
  cliApi.withCommand({
    name: 'dependencies-pilet',
    alias: ['deps-pilet'],
    description: 'Lists the dependencies of the current pilet.',
    arguments: [],
    flags(argv) {
      return argv
        .boolean('only-shared')
        .describe('only-shared', 'Only outputs the declared shared dependencies.')
        .default('only-shared', false)
        .string('base')
        .default('base', process.cwd())
        .describe('base', 'Sets the base directory. By default the current directory is used.');
    },
    run(args) {
      // your code here, where args.onlyShared refers to our custom argument
    },
  });
};

argumentsa和flagsin 有什么区别ToolCommand?参数只是需要位置参数吗?需要再次列出职位吗?

关于这个的最后一个问题 - 我想得到一个像数组一样的位置列表。这是什么语法?我试过arguments: ['list[]'],了,但没有用。

4

1 回答 1

1

是的,参数是位置的,但是,它们也可能是可选的。

有关这方面的任何内容,请查看Yargs 的文档。这可能会有所帮助。

您仍然可以使用带有 argv 的标志来描述这些位置,例如:

return argv
    .positional('source', {
        type: 'string',
        describe: 'Sets the source root directory or index.html file for collecting all the information.',
        default: apps.debugPiralDefaults.entry,
    })
    // ...

关于您对数组的问题:要允许多个,您可以使用..后缀作为您的位置名称。

在你的情况下,这意味着:arguments: ['[list..]'],

在 Yargs[]中并不意味着数组,而是可选的。这与<>,这意味着需要。对于位置描述,仍然使用,例如,string-> 你在这里只描述一个元素,但是由于你指定..传输的数据类型将始终是 an Array<T>,其中T是你给 Yargs 的单一类型。

希望有帮助!

于 2020-06-20T12:16:50.040 回答