Skip to content

Latest commit

 

History

History
144 lines (109 loc) · 7.88 KB

babelrc.md

File metadata and controls

144 lines (109 loc) · 7.88 KB

Nota del traduttore

Questa è la traduzione del file babelrc.md. Qui c'è il link dove si confrontano le differenze tra commit di riferimento di questa traduzione e l'ultimo commit di AVA sul branch master (Se si clicca sul link, e non si vede il file babelrc.md nella lista dei file modificati, questa traduzione è aggiornata).


Configurare Babel

Traduzioni: Français

Ci sono più opzioni per configurare il mdoo in cui AVA transpila i tuoi test con Babel.

Impostazione predefinita per la transpilazione in AVA

AVA ti permette di usare nuove funzionalità JavaScript, come le async functions. Per usare queste nuove funzioni su vecchie versioni di Node.js AVA transpila i test ed i file helper con l'impostazione Babel @ava/stage-4. Questo è molto utile per progetti dove non si utilizza Babel per i file sorgenti, ma si vogliono usare le nuove funzionalità JavaScript per i test.

Personalizzare come AVA transpila i tuoi test

Puoi sovrascrivere la configurazione Babel predefinita in AVA da usare per transpilare i test nel package.json. Ad esempio, la configurazione seguente aggiunge il plugin Babel rewire ed utilizza l'impostazione stage-3(che è un sottoinsieme di stage-2).

Puoi sovrascrivere la configurazione predefinita di Babel che AVA utilizza per la traspilazione dei test nel package.json. Per esempio, la configurazione sotto aggiunge il plugin Babel rewire, e aggiunge l'impostazione stage-3 a Babel.

You can override the default Babel configuration AVA uses for test transpilation in package.json. For example, the configuration below adds the Babel rewire plugin, and adds the Babel stage-3 preset.

{
    "ava": {
        "babel": {
            "plugins": ["rewire"],
            "presets": ["@ava/stage-4", "stage-3"]
        }
    }
}

Usare Polyfills per Babel

AVA ti permette di scrivere i test con la nuova sintassi JavaScript, anche su versioni vecchie di Node.js che non lo supportano nativamente. Questo non aggiunge o modifica il tuo ambiente corrente. Per esempio usando AVA non si aggiungono funzionalità come Array.prototype.includes() ad un ambiente Node.js 4. Caricando il modulo Babel Polyfill puoi aggiungere queste funzionalità. Considera che questo modulo modificherà l'ambiente che stai utilizzando, cambiando potenzialmente il comportamento del tuo software. Puoi abilitare babel-polyfill aggiungendolo all'opzione require di AVA:

{
	"ava": {
		"require": [
			"babel-polyfill"
		]
	}
}

Transpilare i file sorgente

Per transpilare i tuoi file sorgente, avrai bisogno di definire una configurazione babel nel file package.json o un file .babelrc. Inoltre, dovrai esplicitamente dichiarare ad AVA di caricare babel-register in ogni processo, aggiungendolo nella sezione require del tuo file di configurazione AVA:

package.json

{
  "ava": {
    "require": ["babel-register"]
  },
  "babel": {
    "presets": ["@ava/stage-4"]
  }
}

Considera che caricare babel-register in ogni processo ha un alto costo in termini di performance. Se hai molti file di test, puoi considerare di transpilare i tuoi file sorgente prima di fare eseguire i tuoi test. Questo non è però ideale, poichè potrebbe complicare l'utilizzo del watch mode in AVA, quindi suggeriamo il caricamento di babel-register fino a che il costo prestazionale sia sopportabile. Come impostare un passo di pre-compilazione non è lo scopo di questa guida, ma possiamo consigliare di dare un'occhiata ad uno qualsiasi dei vari build systems che supportano Babel. È al momento presente una issue dove si sta discutendo come migliorare questo aspetto in AVA.

Transpilare i file di test e sorgente allo stesso modo

Utilizzando l'impostazione "inherit" i tuoi test verranno transpilati allo stesso modo dei tuoi file sorgente (come configurato nel tuo file babelrc). AVA aggiungere qualche plugin interno in aggiunta quando verrano transpilati i file di test, senza procurare alcun cambio di comportamento ai tuoi file di test.

package.json:

{
  "ava": {
    "require": "babel-register",
    "babel": "inherit"
  },
  "babel": {
    "presets": ["@ava/stage-4", "react"]
  }
}

Nell'esempio sopra, sia i file di test che sorgente saranno transpilati utilizzando le impostazioni @ava/stage-4 e react.

AVA controllerà solamente l'esistenza del file .babelrc nella stessa cartella del file package.json. Se questo file non venisse trovato allora si assume che la configurazione Babel è inclusa nel file package.json.

Estendere la configurazione per la transpilazione dei sorgenti

Quando configuri le impostazioni Babel per i tuoi test, puoi impostare l'opzione babelrc su true. Questo ti permetterà di unire i plugin selezionati con quelli configurati nel tuo file babelrc.

package.json:

{
  "ava": {
    "require": "babel-register",
    "babel": {
      "babelrc": true,
      "plugins": ["custom-plugin-name"],
      "presets": ["custom-preset"]
    }
  },
  "babel": {
    "presets": ["@ava/stage-4", "react"]
  }
}

Nell'esempio sopra, i file sorgente sono compilati utilizzando le impostazioni @ava/stage-4 e react, i file di test utilizzano i suddetti plugin, con l'aggiunta de plugin custom specificato.

AVA controllerà solamente l'esistenza del file .babelrc nella stessa cartella del file package.json. Se questo file non venisse trovato allora si assume che la configurazione Babel è inclusa nel file package.json.

Estendere un file di configurazione alternativo

Se, per qualche motivo, la tua configurazione Babel non si trova in una dei file predefiniti (.babelrc o package.json, puoi impostare nell'opzione extends la configurazione alternativa che intendi utilizzare per i tuoi test.

package.json:

{
  "ava": {
    "require": "babel-register",
    "babel": {
      "extends": "./babel-test-config.json",
      "plugins": ["custom-plugin-name"],
      "presets": ["custom-preset"]
    }
  }
}

L'esempio sopra utilizza babel-test-config.json come configurazione per il transpiling dei file sorgente e come configurazione di base per i file di test. Per i file di test la configurazione verrà comunque estesa con i plugin e le impostazioni specificati.