Convert the collection and environment
Install both packages:format to 'bru' for .bru files instead.
The script needs Node.js 18 or later.
1. Read the arguments
Import the converter, the file writers from@usebruno/filestore, and Node’s file helpers. Take the paths from the command line and print a usage line if any are missing. format is 'yml' for OpenCollection YAML or 'bru' for classic .bru files.
2. Add the helpers
safeName strips characters that are not allowed in file names. write saves a file and creates any missing parent folders. readJson reads and parses a JSON file.
3. Convert
postmanToBruno resolves to the Bruno collection and a list of issues it could not convert cleanly. If an environment file was given, convert it and add it to the collection so it is written with the rest. See the API Reference for the full signature.
4. Write the collection settings and environments
brunoConfig holds the collection settings. For .bru collections it is written to bruno.json. For yml it is embedded in opencollection.yml. The collection root holds collection-level auth, headers, and scripts. Each environment gets its own file in the environments folder.
5. Write the folders and requests
Each folder becomes a directory and each request a file. Folder-level auth, headers, and scripts go infolder.yml or folder.bru. A stack is used instead of recursion so deeply nested collections are safe.
6. Report
Print where the collection was written, then each issue with its severity, the path of the item, and a message.7. Run the script
Run the script with Node.js, passing the paths as arguments.<postman-collection.json>: The collection exported from Postman<output-folder>: The folder to create the Bruno collection in. It is created if it does not exist[postman-environment.json]: Optional. An environment exported from Postman
format set to 'bru', the files are bruno.json, collection.bru, folder.bru, and .bru requests instead):
environments.
Full script
The complete script, ready to copy.convert.mjs is an ES module with top-level await. convert.js is the same script as CommonJS, with the steps inside an async main function.
Open the collection in the app or run it with the CLI
If you included an environment, it keeps its Postman name. Open the folder in the app, or run it with the CLI:- Bruno app
- Bruno CLI
- Click the + button in the top-left corner and select Import Collection.
- Choose Bruno Collection, then browse to the output folder.
- Click Import.