zoukankan      html  css  js  c++  java
  • 关于 Electron App 代码管理的思考

    引子

    最近部门在推进 electron base 的 app 开发。 之前我们采用 electron-builder 做构建,但是由于它不支持客制化 file description,所以我的一个同事开发了一个支持 file description 的程序(包装了 electron-packager)来取代之前的配置(其实我觉得提一个 requet 给 electron-builder 会更好)。后来不知什么时候,这个小程序又被迫必须支持从 Jenkens 抽取版本号。同事很头疼,我们就聊了一会。也就有了下面的一些思考。

    构建

    目前构建走的的是 Jenkens。 从 Jenkens 选择项目构建,后台会从代码仓库拉最新的主分支代码下来,然后安装依赖,依次编译(包括编译web资源,比如 es2015代码,scss, react 代码),打包(electron-builder)。总共下来,需要花费大约八分钟。

    下载代码 -> 安装依赖 -> 编译(es2015, react, scss etc)-> 打包为可执行文件
    

    下面是几个我觉得还有优化空间的地方。

    • 下载代码

    代码中包含大量的 dll,下载花费的时间较长且本身更新频率并不高,我建议在 server 中维护一个 git repo,用 git pull 代码代替直接下载。

    • 安装依赖

    依赖中包含很多开发(dev)工具,比如各种 hot-loader 和 middleware,这些包对构建(production)毫无用处。如果可以忽略再好不过。

    一般在 package.json 中,构建工具例如 gulp 都会加入 devDependencies 中,下面的命令不会安装 devDependencies

    npm install --only=production
    

    但是这样做是有问题的,gulp 不会被安装了,那么,构建也就无法谈起。所以要区分开发工具和构建工具。比如: react-hot-loader 就是开发工具,css-loader 就是构建工具。也就是说,原本对于 dependencies 和 devDependencies 的定义方式,我们要重新规划。

    扯远了,目前看起来,优化空间是有,但是想法还不够成熟。

    版本号管理

    PO 希望构建的项目的版本号从 Jenkens 中抽取,这就需要项目在构建过程中分析 Jenkens 提供的一个链接,从中抽取版本号,然后加入项目。这样带来一个问题就是,同样的代码可能打包出两个版本号不同的安装包。而且也无法知道安装包对应到代码的具体版本,也就无法在 bug 出现的时候做 hot fix。如果非要维护这样的关系也不是不可以,那就要额外加入版本映射了。

    我认为版本号还是应该和代码绑定在一起,即,代码中就预先配置好版本号,譬如在 package.json 的 version 字段中配置当前的版本号。这样如果有线上 bug 的话,也方便做 hot fix。当然 Jenkens 可以提供类似版本名这样的东西,作为一个可选的配置项,存在于安装包之中。比如这样。

    config.ini

    version_name=alpha
    

    程序可以根据需要,读取并呈现。

    (未完待续)

  • 相关阅读:
    Spring的PropertyPlaceholderConfigurer
    关于解决java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoader问题
    CentOS7.x安装flash
    C#——list列表复制
    C#——dataGridView控件获取当前鼠标所在的行
    C#——button按钮风格(按下改变)
    C#——chart控件坐标轴刻度细分(副刻度)
    C#——USBHID上位机开发(win10、win7)
    C#——自定义控件工具箱图标
    C#——给线程传递参数的三种方式
  • 原文地址:https://www.cnblogs.com/Rexxar/p/6433653.html
Copyright © 2011-2022 走看看