您的位置:首页 > 运维架构

openlayers3 自定义打包

2017-01-10 15:21 225 查看

1.简介

首先放一个启发我的文章:http://www.jianshu.com/p/d06d58804414


ol有很多库,有时候我们只需要部分,比如map,view.layer等。如果把整个文件都引入项目,有些浪费资源且文件过大,与最小化的思路相违。这时候就需要单独打包这些内容,这也是这边记录的主要内容,如何自定义打包我们需要的库?

2.创建配置文件

1.下载openlayer: npm i openlayers

2.创建ol-custom.json放在node_modules/openlayers/build中。

注意

build文件夹是在npm中安装openlayers的时候自带的,里面那些配置文件是必须的。所以没有build的旁友们要注意一下你的代码来源。


3.配置

{
"exports": [
"ol.Map",
"ol.View",
"ol.control.defaults",
"ol.layer.Tile",
"ol.source.OSM"
],
"compile": {
"externs": [
"externs/oli.js",
"externs/olx.js"
],
"define": [
"goog.DEBUG=false"
],
"extra_annotation_name": [
"api", "observable"
],
"compilation_level": "ADVANCED",
"manage_closure_dependencies": true
}
}


4.npm执行:

cd ./node_modules/openlayers

node tasks/build.js build/ol-custom.json build/ol-custom.js

此时在build文件夹下会出现ol-custom.js的文件。这个文件就是我们自定义的打包文件。

关于配置

可以看下ol的官方文档:

https://github.com/Chengyanzhao/openlayers/blob/master/tasks/readme.md

更多

使用上述配置打包的结果是经过混淆和压缩的,也就是说你new map 后,无法找到map.addlayer方法。这就需要不混淆打包,更改配置即可实现:

{
"exports": ["*"],
"compile": {
"externs": [
"externs/oli.js",
"externs/olx.js"
]
}
}


之试了很久都没找到如何不混淆打包,但是看了官方的文档,说如果不配置其他项就可以实现不混淆打包。看来英语还是很有必要的,不然根本没法解决这个问题。

另外”exports”: [““], 这里代表全部打包,如果想固定打某些库,可以像下面那样配置:

"exports": [
"ol.Map",
"ol.View",
"ol.control.defaults",
"ol.layer.Tile",
"ol.source.OSM"
],
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  gis openlayers