欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

weex 部署npm run dev & npm run serve

程序员文章站 2022-05-13 17:18:44
...

之前的部署流程都是用weex compilenginx,每次编译都会编译整个项目里的vue文件或者单独编译某个文件,由于项目较大,可能还有多级文件夹的情况,这样哪怕单独编译文件,也会有compile后目录的变化,也无法通过快捷的命令别名处理。

所以后面我开始尝试npm run dev & npm run serve命令。
以上命令会由npm自动开启服务器,默认8081端口,修改了文件保存,就能看到效果了,比以上的nginx模式好像要高档些。

但是我们的部署情况是依赖于一个weex.json文件,所以这里我用python写了个脚本

#!/usr/bin/env python
#-*- coding: utf-8 -*-
import os
import os.path
import sys
import socket
import json


jsFileInNginxPath = 'dist'
nginxWeexJsonFilePath = "weex.json"

def get_host_ip():
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        s.connect(('8.8.8.8', 80))
        ip = s.getsockname()[0]
    finally:
        s.close()

    return ip




# reload(sys)
# sys.setdefaultencoding("utf-8")
pageDicts = []
weexJsonDict={}
jsFileInNginxPaths = []



for parent,dirnames,filenames in os.walk(jsFileInNginxPath):
    for filename in filenames:
        path = os.path.join(parent, filename)
        if path.endswith('.js') and path.count('.web.js') <= 0:
            jsFileInNginxPaths.append(path)

#写入weex.json
if jsFileInNginxPaths.count > 0:
    localIP = get_host_ip()
    baseUrl = "http://" + localIP + ":8080/"
    for jsFileInNginxPath in jsFileInNginxPaths:
        if jsFileInNginxPath.count('/include/') <= 0:
            jsFileInNginxPath = 'http://' + localIP +':8081'+'/' +  jsFileInNginxPath
            jsFileName = os.path.basename(jsFileInNginxPath)
            jsFileMD5 = 'ff'
            pageDicts.append({"md5":jsFileMD5,"page":jsFileName,"url":jsFileInNginxPath})
    weexJsonDict["pages"] = pageDicts
    weexJsonDict["patch"] = {}
    bundleZipFileMD5 = 'fs'
    weexJsonDict["zip"] = {}
    jsonStr = json.dumps( weexJsonDict, ensure_ascii=False, encoding='UTF-8')
    with open(nginxWeexJsonFilePath, 'wt') as f:
        f.write(jsonStr)



这样就会自动生成一个weex.json的文件,客户端从这个文件就能找到相应的js页面了。
后续开发weex页面,就生成一次weex.json文件后,修改vue文件,保存,重新进入页面就能刷新了。
如果添加了vue文件,则需要重新运行脚本,然后客户端也得重启,下载最新的weex.json文件