
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 :
csvversion6.0.0, précédente version5.5.3
csv-generateversion4.0.0, précédente version3.4.3
csv-parseversion5.0.0, précédente version4.16.3
csv-stringifyversion6.0.0, précédente version5.6.5
stream-transformversion4.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 aucundefaultexports. - Dans le package
csv-parse, l’optionrelaxest désormaisrelax_quotes. - Dans le package
csv-parse, l’optionskip_lines_with_empty_valuesest désormaisskip_records_with_empty_values. - Dans le package
csv-parse, l’optionskip_lines_with_errorest désormaisskip_records_with_error. - Dans le package
csv-parse, l’erreurCSV_RECORD_DONT_MATCH_COLUMNS_LENGTHest désormaisCSV_RECORD_INCONSISTENT_COLUMNS. - Dans le package
csv-parse, l’erreurINCONSISTENT_RECORD_LENGTHest 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
exportsdupackage.json - Écriture de nombreux exemple intégré à la documentation
- Remplace de la distribution
browserpar 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_errorsetraw - Dans
csv-parse, l’optionobjnamepeut 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.