Node.js 带网页包的OpenLayers v3
您好,我目前正在使用OpenLayers v3和Webpack。当我不使用UglifyJS时,它工作得很好。但当我添加我的uglifyJS配置时,它就不再编译了 我的UglifyJS配置Node.js 带网页包的OpenLayers v3,node.js,webpack,openlayers-3,uglifyjs,Node.js,Webpack,Openlayers 3,Uglifyjs,您好,我目前正在使用OpenLayers v3和Webpack。当我不使用UglifyJS时,它工作得很好。但当我添加我的uglifyJS配置时,它就不再编译了 我的UglifyJS配置 new webpack.optimize.UglifyJsPlugin({ minimize: true, sourceMap: false, compress: { warnings: false, se
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
文件
知道如何解决这个问题吗?这是我在我的网页项目中加载ol3的方式: webpack.config.js:
...
resolve: {
alias: {
openlayers3: "openlayers/dist/ol.js",
},
},
plugins: [
new webpack.ProvidePlugin({
ol: "openlayers3",
}),
]
...
提供插件加载模块,并使其在应用程序中全局可用。您不再需要在js文件中导入ol3
这里也有同样的问题。通过使用CommonChunkPlugin将openlayers移动到自己的块中,然后在UglifyJsPlugin中忽略该块来解决 参赛作品:
entry: {
vendor: Object.keys(packageDotJson.dependencies),
openlayers: ['openlayers'],
app: './src/index.jsx'
}
CommonChunk插件:
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>
<% } %>
这不是你的?Different issue@JonatasWalker:/的副本吗?但它是在主输出文件中添加ol3库,还是按需添加(当页面需要ol3时)?是的,这样ol3将捆绑在主文件中OpenLayers仅在需要时加载?不,不是真的。要做到这一点,您必须设置多个入口点,为每个入口点生成一个单独的html文件,或者在webpack2中使用require.sure或System.import