У меня были проблемы с webpack и некоторыми библиотеками node_modules, которые не были "babelized" в поставляемом пакете.В частности, синтаксис ES6, такой как 'const'.
До сих пор я решал эту проблему, включая конкретные библиотеки, которые создавали бы эту проблему в пути babel-loader, чтобы форсировать их babelization.Однако в данном конкретном случае небабелизированный код, похоже, поступил из библиотеки, которой нет в моем package.json, что означает, что он должен быть вложен в другую библиотеку.
Как я могу отследить, из какой библиотеки взята эта вложенная библиотека?
Или есть более простое решение, обеспечивающее, чтобы все мои модули не оставались в форме ES6?
Ниже приведен мой файл webpack.config.js:
var webpack = require('webpack');
var path = require('path');
const UglifyJSPlugin = require('uglifyjs-webpack-plugin')
var BUILD_DIR = path.resolve(__dirname, 'static/public/js');
var APP_DIR = path.resolve(__dirname, 'static/js');
var CSS_DIR = path.resolve(APP_DIR, 'css');
var config_function = function(env){
var config = {
entry: ['babel-polyfill', APP_DIR + '/index.js'],
output: {
path: BUILD_DIR,
filename: env && env.prod ? 'bundle.min.js' : 'bundle.js'
},
plugins: env && env.prod ? [
new UglifyJSPlugin({uglifyOptions:{
ecma: 5,
mangle: {
safari10: true
},
compress: true
}})
]: [],
module: {
loaders: [{
test: /\.jsx?/,
include: [APP_DIR, /node_modules\/snakecase-keys/, /node_modules\/redux-api-middleware/,/node_modules\/map-obj/], // Those are some of the libraries that are not babelized...
loader: 'babel-loader',
query: {
presets: ['es2015', 'react', 'stage-2'] //, 'react-hmre']
}
}
, {
test: /\.scss$/,
loaders: ['style-loader', 'css-loader', 'sass-loader']
}, {
test: /\.json$/,
loader: 'json-loader'
}, {
test: /\.less$/,
include: CSS_DIR,
loaders: ['style-loader', 'css-loader', 'less-loader']
},
{
test: /\.css$/,
loaders: ['style-loader', 'css-loader']
}
]
}
};
return config;
}
module.exports = config_function;