2016-08-04 71 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加載器。你能包括整個webpack配置嗎? –

+0

如果您希望擴展名不同,您可以將其更改爲'test:/ \。js $ /,'。 –

+0

當然,更新@ E_net4 –

回答

2

Webpack依靠resolve.extensions配置來了解在進行模塊解析時需要考慮哪些擴展。默認值爲["", ".webpack.js", ".web.js", ".js"],因此需要手動添加.jsx擴展名。只需將其包含在webpack配置對象的根目錄中即可:

resolve: { 
    extensions: ['', '.js', '.jsx'] 
},