OpenLayers v3与Webpack
您好,我目前正在使用OpenLayers v3与Webpack。 当我不使用UglifyJS时,它工作正常。 但是,当我添加我的uglifyJSconfiguration的时候,它不会再编译了
我的UglifyJSconfiguration
new webpack.optimize.UglifyJsPlugin({ minimize: true, sourceMap: false, compress: { warnings: false, sequences: true, dead_code: true, conditionals: true, booleans: true, unused: true, if_return: true, join_vars: true, drop_console: true } }),
我得到这个错误
from UglifyJs RangeError: Maximum call stack size exceeded
我正在使用dist/ol.js
文件。
任何想法如何解决这个问题?
这是我如何加载我的webpack项目中的ol3:
webpack.config.js:
... resolve: { alias: { openlayers3: "openlayers/dist/ol.js", }, }, plugins: [ new webpack.ProvidePlugin({ ol: "openlayers3", }), ] ...
ProvidePlugin加载模块并使其在您的应用程序中全局可用。 你不必在你的js文件中inputol3。
https://webpack.github.io/docs/list-of-plugins.html#provideplugin
在这里有同样的问题。 使用CommonsChunkPlugin将openlayers移动到自己的块中,然后忽略UglifyJsPlugin中的块。
项:
entry: { vendor: Object.keys(packageDotJson.dependencies), openlayers: ['openlayers'], app: './src/index.jsx' }
CommonsChunkPlugin:
new webpack.optimize.CommonsChunkPlugin({ names: ["openlayers", "vendor"], minChunks: Infinity, filename: "[name].[hash].js" }),
UglifyJsPlugin:
new webpack.optimize.UglifyJsPlugin({ compress: { warnings: false }, exclude: 'openlayers' }),
然后使用HtmlWebpackPlugin包含在html模板中:
<% for (var chunk in htmlWebpackPlugin.files.chunks) { %> <script src="<%=htmlWebpackPlugin.files.chunks[chunk].entry %>"></script> <% } %>