npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

csv-streamer

v2.0.3

Published

CSV reader with Node Stream API

Downloads

179

Readme

CSV-streamer

This is code for reading CSV files. It is very simple and only tries to fill one single need : if someone hands you a CSV file and you want to read it into your code for further processing.

It has no dependencies, except for Mocha if you want to run the tests.

The API is designed as a readable and writeable stream, making it possible to use it as part of a "pipe"-chain. Other benefits are great performance and simple but flexible interface.

Installing

npm install csv-streamer

Usage

Usually you just want to load that CSV-file :

const fs=require('fs');
const CSVStream=require('csv-streamer').Reader;
const csv=new CSVStream({ headers: true });

csv.on('data',function(line){
	//do something with the data
});
fs.createReadStream('file.csv').pipe(csv);

CSV files can be with or without a leading line with names of columns (headers). The default is no headers and in that case each data-callback will provide you with an array of the values of each line. If headers are available it will instead contain an object with the values as named properties.

If you need to know the names of the headers, you can listen for the "headers" event, it will provide you with an array of the names.

Should you have the need for parsing tab separated files or something even more wicked, you can pass a custom delimiter as part of the options object :

var csv=new CSVStream({headers:true,delimiter:'\t'});

In some cases you are offloading the data to an async destination and for this you can use the asyncdata event instead of the regular data event. It will provide a callback as the second parameter and you will not receive futher data before calling that to acknowledge you are done processing the data.

If you are so unlucky that you have CSV in a string only, you should look into wrapping the string in a stream API and then pipe that into the CSV stream. Something like this (not tested).

You can also have a look at the test folder to see some examples of using the API.

In my testing it seems to be around 33% faster compared to node-csv code by Chris Williams.

Other

Made by Alex Scheel Meyer. Released to the public domain.

Uses CSVToArray function by Ben Nadel

Inspired by the node-csv code by Chris Williams

Also see csv-stream