UNPKG

3.44 kBJavaScriptView Raw
1const webpack = require('webpack');
2const path = require('path');
3const fs = require('fs');
4let utils = light.util;
5let shell = utils.require('shelljs');
6
7exports.build = function () {
8
9 return Promise.all([
10 //JSNative
11 new Promise(function (resolve) {
12 if(require("./lib/utils").hasPlugin("jsnative") && (!light.options.onlyFor || light.options.onlyFor === 'jsn')){
13 let config_native = require("./build.native").build();
14 return webpack(config_native, function () {
15 resolve();
16 })
17 }else{
18 resolve()
19 }
20 }),
21 //miniapp
22 new Promise(function (resolve) {
23 if(require("./lib/utils").hasPlugin("miniapp") && (!light.options.onlyFor || light.options.onlyFor === 'miniapp')){
24 let config_native = require("./build.miniapp").build();
25 // 【小程序】小程序在编译构建时支持热刷新功能,当开发者编辑代码后大约5s左右触发手机端程序界面的自动加载刷新
26 global.middleware = global.middleware || [];
27 let clinetCheckMap = {};
28 global.middleware.push(function(req,res,next){
29
30 if(req.path === "/check_reload_me"){
31 if(!clinetCheckMap[req.query.id]){
32 clinetCheckMap[req.query.id] = false;
33 }
34 res.send({
35 reload:clinetCheckMap[req.query.id]
36 })
37 clinetCheckMap[req.query.id] = false;
38 }else{
39 next()
40 }
41 });
42 return webpack(config_native, function () {
43 Object.keys(clinetCheckMap).forEach(client=>{clinetCheckMap[client]=true});
44 resolve();
45 })
46 }else{
47 resolve()
48 }
49 }),
50 //web
51 new Promise(function (resolve) {
52 //110579:若--only-for jsn,则不编译h5
53 if (light.options.onlyFor && light.options.onlyFor !== 'h5') {
54 return resolve()
55 }
56
57 let config_web = require("./build.web").build();
58 if (process.env.NODE_ENV === "dev") {
59 const compiler = webpack(config_web);
60 //122625 【TS:201902110033-财富业委会-潘腾-【需求类型】 需求【需求描述】 1. 前后端分离开发】
61 global.middleware = global.middleware || [];
62
63 const devModule = require("webpack-dev-middleware")(compiler, {
64 noInfo: true, log: false
65 });
66 global.middleware.push(devModule);
67
68 devModule.waitUntilValid(() => {
69 resolve()
70 });
71
72 global.middleware.push(require("webpack-hot-middleware")(compiler, {
73 noInfo: true, log: false
74 }))
75
76 //97319 指定输出的编译文件目录
77 //175283 支持 light release -w -o 指定编译目录
78 } else {
79 webpack(config_web, function () {
80 resolve();
81 });
82 }
83 })
84 ])
85 //175283 支持 light release -w -o 指定编译目录
86};