Where communities thrive

  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
    Mateusz Burzyński
    my_script input input2 input3 --other option
    Mateusz Burzyński
    found it in tests :see_no_evil:
    $0 [input..] does the trick
    Sean Dietrich
    I am fairly new to Yargs but wanted to know if it was possible to prefix commands with global arguments. So when running the command it would apply to any and all commands
    script-name global-arg command --option=1
    Benjamin E. Coe
    :wave: hey @sean-e-dietrich, just an FYI; we're using Slack for chat now, happy to field your questions here:
    Iliyan Peychev
    Hello, I have a question regarding sub-commands. I would like to have a command called remote with two sub-commans - add and rm. Each of these sub-commands will require one or more values. I'm struggling to achieve that. The closes I found was "positionals", but I can't figure out how to say that there should be at least one "positional" specified and how to say for which positional the number of required values. How is this supposed to be done with yargs? Here is what I have so far:
    const yargs = require('yargs');
      'Manage a remote,
      (yargs) => {
        yargs.positional('add', {
          describe: 'Adds a remote',
          type: 'string'
        yargs.positional('rm', {
          describe: 'Remove a remote',
          type: 'string'
    How can I specify that add and rm subcommands should expect some number of arguments?
    how can I tell yargs that at least add or rm should be specified?
    is there somewhere an example?
    Jordan Harband
    or required: true probably
    Iliyan Peychev
    but I want only one to be required at time, not both
    either add or rm
    Jordan Harband
    i think you want to then have two commands - remote add and remote rm
    and then .demandCommand
    Iliyan Peychev
    hm, so to create two commans, called remote add and remote rm? Doesn't yargs support kinda sub-commands?
    I thought "positionals" are the closest one to this concept
    Jordan Harband
    i'm not sure how to require only one of those two tho, as subcommands
    Iliyan Peychev
    hm, I can't believe this is not possible with yargs. A good example would be git remote --help - there are many sub-commands plus additional params for each of them
    this is what I want to achieve
    git remote rename <old> <new>
    git remote remove <name>
    Jordan Harband
    i mean that is in the examples
    Iliyan Peychev
    interesting, I'll check this. this thing with merging separate files I'm not sure I like very much on first sight (I hate magic), but I'll try to see of I'll build something based on that
    Míla Kuchta

    Hi guys,

    I have a problem no other command line parsing library I've explored (probably) supports and since the generality of yargs, maybe you have some solution for it, but I can't really tell as from many options you provide, I'm a bit lost :).

    I want to get a list of possibly multiple commands with arguments in a row as defined on the command line, so that I can build from it a "functional pipeline", that will be applied to some array/iterator/stream.

    Is this case somehow solvable with yargs?

    Many thanks...

    Syed Faraaz Ahmad
    what does the nargs() function do?
    I looked at the docs, and I dont understand it
    an example or 2 would be really helplful

    Had a quick question. I am building a CLI using yargs and want to give users the options to add their own commands in a specific folder. I know I can use the following to accomplish this:

    .commandDir(path.join(process.cwd(), 'commands))

    This works great when the folder exists in the project, but if it does exist I get the following error:

    Error: Error: ENOENT: no such file or directory, scandir 'DIRECTORY_PATH'

    is there a way add the command directory ONLY if the directory exists?

    Joel Kirchartz
    hey, I'm trying to use commandDir here in /bin to load commands from /lib but it seems the positional arguments only work for the first command and not the other ones? am I doing something wrong?
    Hi, I'm having trouble writing typescript yargs unit tests. Can anyone help with this issue:,
    Leroy van Engelen
    Hi, I am wondering whether yargs supports command lines as the following: myprog -r repo -v clone -p proj -a, i.e. having arguments (-r, -v) that are available for each command and are specified before it and arguments that are only valid for a specific command (-p, -a). Similar to I tried using something like yargs.option(...).command(...) but that did not seem to work.
    Leroy van Engelen
    To clarify: In the example clone is a command, not an argument to -v. Only now seeing how unclear that was sigh
    Christopher Dieringer
    Hey all. Is there a known working recipe for nested completions? Suppose I have cmd a [a1, a2,a3]. When I punch in subsequently cmd a a1 I continue to get completions as a1 a2 a3 even if I did a .completion(a1, ...) with higher specificity options
    Joe Gornick
    Hey folks, if writing CLIs with yargs, is there a recommended way to do any sort of logging? Is it just a matter of use npm/debug, or npm/winston?
    Martin Oppitz
    Hello together
    I have detect a vulnerability in
    I would like to help you.
    Mikkel Høgh
    Is it just me, or is missing its content? returns 404 for me
    Jonas Amundsen
    Hi, has anyone attempted to use the non-singleton interface with es modules?
    I don't understand the esm platform shims at all. I'm trying to use yargs in node and not the browser, I am making a CLI utility after all, why must I shim anything?
    Ultimately, my goal is to create a utility, bundle it with rollup and distribute a single executable, while using typescript, but that turned out to be easier said than done
    Jonas Amundsen
    Hmm, given that the module-path in package.json is and was wrong since release, I guess not so many are doing this just yet
    Jonas Amundsen
    In lib/platform-shims/esm.mjs:13 you do import y18n from 'y18n', but y18n doesn't have a default export. You can see in node_modules/y18n/build/lib/index.js (after having installed yargs obv), that it only export function y18n(..) {..}
    Consuming the esm-build of yargs using eg. rollup just doesn't work atm (it respects the "module" field of packages recursively)
    Jonas Amundsen
    It appears that the esm-build exports a non-singleton interface, while the cjs exposes a singleton interface. Given that I've understood it correctly, this makes it difficult to consume @types/yargs, as it assumes one of them
    I realize that there probably went a ton of work into yargs/yargs#1708 and I appriciate that, but I wish you would fix the itsy bitsy remaining pieces to make this compatible with eg. rollup