2017-02-28 52 views
0

我想从第一版的WebPack我的代码迁移到v2和添加在SASS装载机,但我得到的错误从V1的WebPack移动到V2

throw new WebpackOptionsValidationError(webpackOptionsValidationErrors); 

我以很迷茫什么最终的文件应该是这样的:

let webpack = require('webpack'); 
let path = require('path'); 


module.exports = { 
    devtool: 'eval-source-map', 
    entry: [ 
    './src/index' 
    ], 
    module: { 

    rules: [ 
     { 
      test: /\.scss$/, 
      use: [ 
       "style-loader", // creates style nodes from JS strings 
       "css-loader", // translates CSS into CommonJS 
       "sass-loader" // compiles Sass to CSS 
      ] 
     }], 

     test: /\.js?$/, 
     loader: 'babel-loader', 
     exclude: /node_modules/ 


}, 

    resolve: { 
    extensions: ['.js'], 
     options: { 
      enforceExtension: false 
     } 
    }, 

    output: { 
    path: path.join(__dirname, '/dist'), 
    publicPath: '/', 
    filename: 'bundle.js' 
    }, 

    devServer: { 
    contentBase: './dist', 
    hot: true, 
     historyApiFallback: true 
    }, 

    plugins: [ 
    new webpack.HotModuleReplacementPlugin(), 
    new webpack.NoErrorsPlugin(), 
     new webpack.LoaderOptionsPlugin({ 
      debug: true, 
       options: { 
      context: __dirname 
     } 
    }) 
    ] 
}; 

此刻代码是两个版本的混合。我正在使用webpack版本2.2.1。谢谢。

回答

0

有您需要更改几件事情:

test: /\.js?$/和相应的loaderexclude应该是rules数组内的另一个对象:

module: { 
    rules: [ 
    { 
     test: /\.scss$/, 
     use: [ 
     "style-loader", // creates style nodes from JS strings 
     "css-loader", // translates CSS into CommonJS 
     "sass-loader" // compiles Sass to CSS 
     ] 
    }, 
    { 
     test: /\.js?$/, 
     loader: 'babel-loader', 
     exclude: /node_modules/ 
    } 
    ] 
}, 

resolve.options不存在,它只是resolve.enforceExtension直接:

resolve: { 
    extensions: ['.js'], 
    enforceExtension: false 
}, 

和最后,虽然这不是一个错误,但只是一个警告,new webpack.NoErrorsPlugin()已被弃用,并已替换为:

new webpack.NoEmitOnErrorsPlugin() 

此外,如果你还没有,你应该看看从官方文档https://webpack.js.org/guides/migrating/迁移指南。