如何设置babel-loader预设的决心

时间:2016-01-03 07:44:27

标签: webpack

我试图与webpack合作。我有一点复杂的依赖:一些组件需要位于某个/home/.../文件夹中的其他组件。

组件(/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"
    }
};

问题是far-away-components文件夹不包含node_modules,我收到错误:Couldn't find preset "react" relative to directory "/home/.../far-away-components"

如何为resolve预设设置babel-loader

3 个答案:

答案 0 :(得分:42)

解决方案from github issue

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

答案 1 :(得分:1)

@mqklin:你需要使用这种解决方法,使用" .map(require.resolve)",因为你没有在你的加载器中排除/ node_modules /。以下格式应该有效:

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

答案 2 :(得分:0)

如何运行

npm init

在/home/.../far-away-components文件夹中, 然后使用npm安装你需要的东西。