web-dev-qa-db-fra.com

Comment dois-je utiliser le fuseau horaire avec le webpack?

En utilisant webpack pour construire mon projet, j'ai généralement besoin de modules dans CommonJS à partir de modules npm. J'ai besoin d'un fuseau horaire dans mon projet, mais lors de la construction du package, vous devez également générer toutes les données à partir du fuseau horaire, ce qui peut être beaucoup.

En outre, la génération échoue avec l'erreur suivante:

ERROR in ./~/moment-timezone/data/packed/latest.json
Module parse failed: /site/node_modules/moment-timezone/data/packed/latest.json Line 2: Unexpected token :
You may need an appropriate loader to handle this file type.
| {
|   "version": "2015a",
|   "zones": [
|       "Africa/Abidjan|LMT GMT|g.8 0|01|-2ldXH.Q",
@ ./~/moment-timezone/index.js 4:15-51

À ce stade, je ne suis pas aussi préoccupé par l'échec de la génération, que par la taille de la génération si elle réussit réellement. Bien sûr, la construction défaillante devra également être corrigée à un moment donné.

J'apprécierais tous les conseils sur la façon de gérer cela, surtout si l'un d'entre vous a rencontré ce même problème en utilisant webpack (ou browserify aussi, probablement).

51
jaredkwright

Vous pouvez résoudre ce problème en ajoutant le chargeur JSON à la configuration de votre webpack.

$npm install json-loader

Et ajoutez-le à vos chargeurs dans webpack.config.js. N'oubliez pas d'ajouter également l'extension.

{
  module: {
    loaders: [
        {include: /\.json$/, loaders: ["json-loader"]}
    ]
  },
  resolve: {
    extensions: ['', '.json', '.jsx', '.js']
  }
}
84
Jeroen Coumans

Si vous utilisez webpack 2.x (actuellement en version bêta)

npm install json-loader

incluez-le ensuite dans votre rules

{
    test: /\.json$/,
    loader: "json-loader"
}
12
William S