args-tokenizer is a lightweight JavaScript library for parsing shell commands with arguments into an argv array. This makes it easy to work with command-line tools and libraries that expect an array format for arguments, such as tinyexec.
- Simple and intuitive API.
- Handles quoted strings and escapes correctly.
- Supports multiline input.
- Ideal for parsing human-readable shell commands, especially
curl-style commands.
Made at Webstudio, open source website builder.
Install args-tokenizer:
npm install args-tokenizerHere's how you can use args-tokenizer to parse shell commands:
import{tokenizeArgs}from"args-tokenizer";constargs=tokenizeArgs(`ls -la "./src"`);console.log(args);// ["ls", "-la", "./src"]args-tokenizer also supports multiline commands, such as:
constargs=tokenizeArgs(` curl \\ -X POST \\ "https://my-url.com"`);console.log(args);// ["curl", "-X", "POST", "https://my-url.com"]One common use case is passing more human-readable commands into the tinyexec library:
import{tokenizeArgs}from"args-tokenizer";import{x}from"tinyexec";const[command, ...args]=tokenizeArgs("ls -la");constresult=awaitx(command,args);console.log(result.stdout);Parses a shell command string into an array of arguments. Properly handles:
- Quoted strings (e.g.,
'"./path/to/file"'). - Escaped characters (e.g.,
\"). - Multiline commands (e.g., lines ending with
\\).
loose: Iftrue, the tokenizer will not throw an error when closing quotes are missing. Default isfalse.
// Without loose option (default behavior)// This will throw an error due to the missing closing quotetokenizeArgs('command "arg1 arg2');// With loose option enabledconstargs=tokenizeArgs('command "arg1 arg2',{loose: true});// ['command', 'arg1 arg2']This project is licensed under the MIT License.
Contributions are welcome! Feel free to open issues or submit pull requests to improve the library.