web-dev-qa-db-fra.com

Comment régler la résolution pour les préréglages babel-loader

J'essaie de faire un paquet avec webpack. J'ai une dépendance un peu complexe: certains composants en nécessitent d'autres, situés dans un dossier /home/.../.

Composant (fichier /home/.../far-away-components/base-component.js):

import {base_component} from "base-component";
exports class MyComponent extends base_component {
   ...
}

webpack.config.js:

var path = require("path");
module.exports = {
    ...
    module: {
        loaders: [
            {
                test: /\.(js)$/,
                loader: "babel",
                query: {
                    presets: ['react', 'es2015', "stage-0"]
                }
            }
        ]
    },
    resolve: {
        alias: {
            "base-component": "/home/.../far-away-components/base-component.js"
    }
};

Le problème est que le dossier far-away-components ne contient pas node_modules et j'obtiens une erreur: Couldn't find preset "react" relative to directory "/home/.../far-away-components".

Comment puis-je définir resolve pour les préréglages babel-loader?

18
mqklin

Solution de github issue :

query: {
  presets: [
    'babel-preset-es2015',
    'babel-preset-react',
    'babel-preset-stage-0',
  ].map(require.resolve),
}
42
mqklin

@ mqklin: Vous aviez besoin de cette solution de contournement en utilisant ".map (require.resolve)", car vous n'avez pas exclu/node_modules/dans vos chargeurs. Le format ci-dessous devrait fonctionner:

    loaders: [
  {
    test: [/\.js$/, /\.es6$/],
    exclude: /node_modules/,
    loader: 'babel-loader',
    query: {
      cacheDirectory: true,
      presets: ['react', 'es2015'],
    }
  }
]
1
Jim Kim

Que diriez-vous de courir 

npm init

dans le dossier /home/.../far-away-components, .__ puis utilisez npm pour installer ce dont vous avez besoin.

0
youngwind