anchor.diff:      p.StartInfo.FileName <- fileName
       p.StartInfo.Arguments <- args
       p.StartInfo.WorkingDirectory <- workingDir
  -    
  -    match port with
  -        | Some x -> p.StartInfo.Environment.["FABLE_SERVER_PORT"] <- x
  -        | None -> ()
  -
  +    p.StartInfo.RedirectStandardOutput <- opts.RedirectOuput
  +    opts.EnvVars |> Map.iter (fun k v ->
  +        p.StartInfo.Environment.[k] <- v)
       p.Start() |> ignore
       p
   
   let runProcess workingDir fileName args =
  -    let p = startProcess workingDir fileName args None
  +    let p =
  +        ProcessOptions()
  +        |> startProcess workingDir fileName args
       p.WaitForExit()
       match p.ExitCode with
       | 0 -> ()
       | c -> failwithf "Process %s %s finished with code %i" fileName args c
  +
  +let runProcessAndReadOutput workingDir fileName args =
  +    let p =
  +        ProcessOptions(redirectOutput=true)
  +        |> startProcess workingDir fileName args
  +    let output = p.StandardOutput.ReadToEnd()
  +    printfn "%s" output
  +    p.WaitForExit()
  +    output
   
   let rec findPackageJsonDir dir =
       if File.Exists(Path.Combine(dir, "package.json"))
  
positive.code:   --version           Print version
    add                 Add one or several Fable npm packages
    start               Start Fable server
    --port              Port number (default 61225) or "free" to choose a free port. 
    --timeout           Stop the server if timeout (ms) is reached
    npm-run             Start a server, run an npm script and shut it down
      <script>            Name of the npm script, e.g.: `dotnet fable npm-run start`
      --port              Port number (default 61225) or "free" to choose a free port. 
      --args              Args for the npm script, e.g.: `dotnet fable npm-run build --args "-p --output-filename bundle.js"`
    webpack             Start a server and invoke webpack (must be installed in current or a parent dir)
      --port              Port number (default 61225) or "free" to choose a free port. 
      --args              Args for Webpack, e.g.: `dotnet fable webpack --args -p`
    shell-run           Start a server, run an abritrary command and shut it down
      <cmd>            Name of the command to run, e.g.: `dotnet fable shell-run make`
      --port              Port number (default 61225) or "free" to choose a free port. 
      --args              Args for the command, e.g.: `dotnet fable shell-run make --args "build"`
    webpack-dev-server  Same as `webpack` command but invokes webpack-dev-server
  """
  
negative.code:             let pkgDir = Path.Combine(nodeModulesDir, pkg)
              Directory.GetFiles(pkgDir, "*.fsproj") |> Array.tryHead |> function
              | Some projRef ->
                  runProcess workingDir "dotnet" ("add reference \"" + projRef + "\"")
              | None ->
                  printfn "Cannot find .fsproj in %s" pkgDir
          runProcess workingDir "dotnet" "restore"
  