Version 6 du package CSV pour Node.js
By WORMS David
15 nov. 2021
Ne ratez pas nos articles sur l'open source, le big data et les systèmes distribués, fréquence faible d’un email tous les deux mois.
La dernière version du package csv
pour Node.js vient d’être publiée ainsi que celles de ses sous-projects. Voici les versions publiées :
csv
version6.0.0
, précédente version5.5.3
csv-generate
version4.0.0
, précédente version3.4.3
csv-parse
version5.0.0
, précédente version4.16.3
csv-stringify
version6.0.0
, précédente version5.6.5
stream-transform
version4.0.0
, précédente version2.1.3
Il y eut de nombreux commits depuis que le dernier package fut publié, une centaine, un peu trop à mon goût. La plupart de l’effort fut consacré à migrer version les modules ECMAScript et à fournir une infrastructure de build robuste basée sur Rollup. Le site internet a été mis à jour et enrichi par de nombreux exemples.
Avant de présenter les évolutions, commençons par les breaking changes. Certains noms de module ont changé en fonction de l’environnement visé. La documentation fournit de nombreuses informations en ce sens et une multitude d’exemples. Aussi, quelques noms d’options ont été renommées dans le package csv-parse
. Toutefois, la liste des changements incompatibles est relativement courte :
- Les utilisateurs de CommonJS doivent modifier le chemin des modules
sync
, de{package_name}/lib/sync
à{package_name}/sync
. - Les imports sont toujours déstructurés, par exemple
import {parse} from 'csv-parse'
, il n’y a aucundefault
exports. - Dans le package
csv-parse
, l’optionrelax
est désormaisrelax_quotes
. - Dans le package
csv-parse
, l’optionskip_lines_with_empty_values
est désormaisskip_records_with_empty_values
. - Dans le package
csv-parse
, l’optionskip_lines_with_error
est désormaisskip_records_with_error
. - Dans le package
csv-parse
, l’erreurCSV_RECORD_DONT_MATCH_COLUMNS_LENGTH
est désormaisCSV_RECORD_INCONSISTENT_COLUMNS
. - Dans le package
csv-parse
, l’erreurINCONSISTENT_RECORD_LENGTH
est désormaisRECORD_INCONSISTENT_FIELDS_LENGTH
.
Voici la liste des principales évolutions :
- Tous les projets et leurs modules sont désormais écrit en module ECMAScript.
- Utilisation transparente entre CommonJS et ESM via la directive
exports
dupackage.json
- Écriture de nombreux exemple intégré à la documentation
- Remplace de la distribution
browser
par la distribution IIFE générée par Rollup - Nouvelle distribution UMD
- Integration de règles de lint pour tous les fichiers js et coffee
- Backporter la compatibility avec Node.js 8 dans
csv-stringify
- Dans
csv-parse
, afficher le buffer dans les optionsskip_line_with_errors
etraw
- Dans
csv-parse
, l’optionobjname
peut se définir par position d’index - Quelques amélioration du côté de TypeScript
Voici un rapide exemple illustrant les principaux impacts de cette nouvelle version, en utilisant le module csv-parse/lib/sync
. Dans la précédente version, le code ressemble à :
const parse = require('csv-parse/lib/sync');
const records = parse('a, "b" ,c', {
relax: true
});
Dans la dernière version, le code mise à jour est :
// `parse` is now destructured, it is consistent with
// `const {parse} = require('csv/sync');` if you are using the `csv` package.
// Also, the path to the sync module is now 'csv-parse/sync'
const {parse} = require('csv-parse/sync');
const records = parse('a, "b" ,c', {
// `relax` was renamed `relax_quotes`, this is one of the few options from
// `csv-parse` which were renamed.
relax_quotes: true
});
Merci de partager vos bugs et propositions de nouvelles fonctionnalités en vous rendant sur le dépôt du projet CSV dans GitHub.