Skip to main content
Bruno allows you to load any npm module or package for use in your scripting workflows.
Always turn on Developer Mode when using external libraries in Bruno.

Prerequisites

Before you begin, ensure that you have the following:
  1. Node.js installed on your system.
  2. Bruno installed.

Project structure

The folder structure depends on your collection format.
Starting with Bruno v3.1.0, YAML (OpenCollection format) is the default file format when creating new collections. Learn more about create collection here.
bruno-collection
external-lib
echo-api.yml
auth.yml
data.csv
package.json
opencollection.yml
.gitignore
node_modules

Configuration

You need a package.json file at the root of your Bruno collection.
  1. Open your collection folder in Bruno or in an editor such as VS Code.
  2. Open the integrated terminal (in Bruno or your editor) and go to the collection root:
  1. Initialize package.json:
  1. Install the package (run this in the same terminal, from the collection root):
  1. Confirm csv-parse appears under dependencies in package.json, for example:
Exact versions may differ, but what matters is that the dependency is listed after a successful install.
  1. In Bruno, enable Developer Mode for the collection so require() can load packages from node_modules.

Example: Parse CSV with csv-parse

This example uses csv-parse ↗ to turn CSV text into JavaScript objects, then sends the first row as JSON on the request. See the npm package page ↗ for options, streaming APIs, and more. Use a Pre Request script with Developer Mode on:
Bruno Pre Request script using an external library (csv-parse) records[0] is the first data row as an object (for example { name: 'Smith', email: 'smith@example.com' }) because columns: true uses the first line as headers.

Reading CSV from a file

You can also read a CSV file. Enable Developer Mode so fs and path are available. Place data.csv next to the request .yml file and use __dirname:
If the file lives at the collection root (or in a shared folder under it), use bru.cwd() instead:
__dirname is the directory of the executing file (the request, folder, or collection script). bru.cwd() is always the collection root. See __dirname and __filename.