Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including mvdan-sh with all npm packages installed. Try it out:

var mvdanSh = require("mvdan-sh")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

mvdan-sh v0.0.9

A shell parser and formatter (POSIX/Bash/mksh)


This package is a JavaScript version of a shell package written in Go, available at

It is transpiled from Go to JS using GopherJS, available at

Sample usage

const sh = require('mvdan-sh')
const syntax = sh.syntax

var parser = syntax.NewParser()
var printer = syntax.NewPrinter()

var src = "echo 'foo'"
var f = parser.Parse(src, "")

// print out the syntax tree

// replace all single quoted string values
syntax.Walk(f, function(node) {
        if (syntax.NodeType(node) == "SglQuoted") {
                node.Value = "bar"
        return true

// print the code back out
console.log(printer.Print(f)) // echo 'bar'

Available APIs

The APIs listed below are wrapped to be usable in JavaScript, such as replacing Go's io.Writer with string return parameters. Follow the links to read their documentation.

The nodes you will find in the syntax tree are all equivalent to the nodes you will see on the Go API. To get the type of a node, use syntax.NodeType as the example above shows. Some of the most common node types include:

The five above will show up in your syntax tree if you parse a echo foo command, which you can see if you use syntax.DebugPrint to inspect the syntax tree.


RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free