Tokenize a shell string into argv array
npm install args-tokenizerargs-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:
``bash`
npm install args-tokenizer
Here's how you can use args-tokenizer to parse shell commands:
`js
import { tokenizeArgs } from "args-tokenizer";
const args = tokenizeArgs(ls -la "./src");`
console.log(args); // ["ls", "-la", "./src"]
args-tokenizer also supports multiline commands, such as:
`js
const args = 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:
`js
import { tokenizeArgs } from "args-tokenizer";
import { x } from "tinyexec";
const [command, ...args] = tokenizeArgs("ls -la");
const result = await x(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: If true, the tokenizer will not throw an error when closing quotes are missing. Default is false.
#### Examples
`js
// Without loose option (default behavior)
// This will throw an error due to the missing closing quote
tokenizeArgs('command "arg1 arg2');
// With loose option enabled
const args = 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.