2016-08-04 1 views
2

Я портирую существующий проект, который использовал browserfiy для webpack. Ранее импортные заявления, такие как:Операции импорта ES6, которые принимают .jsx, заканчивающиеся на webpack

import MyClass from './MyClass' 

... будет работать. Теперь я должен добавить .jsx расширение

import MyClass from './MyClass.jsx' 

Вот мое определение погрузчик:

var path = require("path"); 

module.exports = { 
    devServer: { 
    inline: true, 
    port: 10000 // Defaults to 8080 
    }, 
    entry: { 
    app: ['./src/app.jsx'] 
    }, 
    output: { 
    path: path.resolve(__dirname, "public/scripts"), 
    publicPath: '/scripts', 
    filename: 'bundle.js' 
    }, 
    module: { 
    loaders: [ 
     { 
     test: /\.css$/, 
     loader: "style!css" 
     }, 
     { 
     test: /\.sass$/, 
     loaders: ['style', 'css', 'sass'] 
     }, 
     { 
     test: /.jsx?$/, 
     loader: 'babel-loader', 
     exclude: /node_modules/, 
     query: { 
      presets: [ 
      "es2015", 
      "stage-0", 
      "react" 
      ], 
      plugins: [ 
      "transform-flow-strip-types" 
      ] 
     } 
     } 
    ] 
    } 
}; 

Любая идея, как убедить Webpack загрузить без расширения?

+0

Насколько я понимаю, что касается webpack, это зависит не только от загрузчика babel. Можете ли вы включить всю конфигурацию веб-пакета? –

+0

Вы можете просто изменить его на 'test:/\. Js $ /,', если вы хотите, чтобы расширение было другим. –

+0

Конечно, обновлено @ E_net4 –

ответ

2

Webpack полагается на конфигурацию resolve.extensions, чтобы узнать, какие расширения следует учитывать при создании разрешения модуля. По умолчанию ["", ".webpack.js", ".web.js", ".js"], поэтому расширение .jsx необходимо добавить вручную. Просто включите это в корень вашего конфигурационного объекта webpack:

resolve: { 
    extensions: ['', '.js', '.jsx'] 
}, 
Смежные вопросы