宿主构建。豫
yuyan · 234 行 · 14179 字节 · UTF-8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234
寻观「标准库」之书。
寻观「标准库」之「数据结构」之「特殊字符」之书。
寻观「标准库」之「数据结构」之「字节串」之书。
寻观「标准库」之「数据结构」之「多态列工具」之书。
寻观「标准库」之「操作系统」之「异步子进程」之书。
寻观「癸象工具」之「总集」之书。
寻观「编译器核心」之「网页汇编核心」之「回收编码」之书。
寻观「编译器核心」之「编译步骤」之「代码生成」之「回收值桥接」之书。
「:文言:此乃旧式六七参之构建本体,独立成函,使入口与自动模式皆可召之;其行悉如旧,不增不减。汉语:把原先写在入口顶层的构建流程收成函数「按宿主构建」,命令行的旧调用形式与新的自动模式都调用它;行为与产物保持原样。:」
「:文言:导出名须为安全 ASCII 识别字,拒注入宿主脚本。汉语:服务入口别名仅接受 ASCII 标识符,避免生成的 JS 被参数注入。:」
「首字符合法」乃化「字符串」而「爻」也。
「首字符合法」者会「字」而
「是子字符串吗」于「字」于『ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_$』
也。
「余字符合法」乃化「字符串」而「爻」也。
「余字符合法」者会「字」而
「是子字符串吗」于「字」于『ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_$0123456789』
也。
「入口名合法」乃化「字符串」而「爻」也。
「入口名合法」者会「名」而
鉴(「获取字符」于「名」)而
有(「缀」于「首」于「余」)则(
虑「非法余」者
「滤」授以「字符串」
于(会「字」而「非」于(「余字符合法」于「字」))于「余」
而
「且」于(「首字符合法」于「首」)于(「等于」于(「长度」授以「字符串」于「非法余」)于「零」)
)
或有「其他」则「阴」
也。
「:文言:编译与汇编二步失败,须告其码与令。汉语:同步运行外部命令并捕获输出;退出码非零(含启动失败的 127)时抛出带退出码、命令行、标准输出与错误输出的中文事故,比「成功运行」多一个退出码。:」
「成功运行带码」乃化「字符串」而化(「列」于「字符串」)而「有」也。
「成功运行带码」者会「程序」而会「参数们」而
虑「果」者
「异步」之「等待」授以「子进程结果」
于(「异步获取输出」于「程序」于「参数们」)而
若「等于」于(「果」中「一」)于「零」则
「元」
否则
「发生事故」于(『命令执行失败(退出码 』附(「整数表示」于(「果」中「一」))附『):』附「新行」附(「间合」
于『 』
于(「缀」于「程序」于「参数们」))附「新行」附『标准输出:』附「新行」附(「果」中「二」)附「新行」附
『错误输出:』附「新行」附(「果」中「三」))
也。
「:文言:自来源目录抄一文入产物目录。汉语:把宿主库里固定的 JS 外壳文件复制进输出目录。:」
「复制宿主文件」乃化「字符串」而化「字符串」而化「字符串」而「有」也。
「复制宿主文件」者会「来源目录」而会「输出目录」而会「名」而
「文件系统」之「写文件」于(「输出目录」附『/』附「名」)于(「文件系统」之「读文件」于(「来源目录」附「名」))
也。
「:文言:六参皆显,第七参可名云工服务入口,无名则传 -;唯编豫言,抄宿主外壳。汉语:按宿主模式编译豫言 Wasm,并可把服务入口导出为指定名称;第七个参数传 - 表示不命名入口。参数依次为模式、源码、输出目录、编译器、包上下文、许可文件、服务入口名。:」
「按宿主构建」乃
化「字符串」而
化「字符串」而
化「字符串」而
化「字符串」而
化「字符串」而
化「字符串」而
化「字符串」而
「有」
也。
「按宿主构建」者会「模式」而会「源码」而会「输出目录」而会「编译器」而会「包上下文」而会「许可文件」而会「服务入口名」而
虑「浏览器乎」者「字符串相等吗」于「模式」于『浏览器』而
虑「云工乎」者「字符串相等吗」于「模式」于『云工』而
虑「无」者
(若「或者」于「浏览器乎」于「云工乎」则「元」否则「发生事故」于『模式须为浏览器或云工』)而
虑「有服务入口乎」者
「非」于(「字符串相等吗」于「服务入口名」于『-』)
而
虑「无」者
(若「且」于「有服务入口乎」于(「非」于「云工乎」)则「发生事故」于『命名服务入口只用于云工模式』否则「元」)
而
虑「无」者
(
若「有服务入口乎」则
(若「入口名合法」于「服务入口名」则「元」否则「发生事故」于『服务入口名须为 ASCII 标识符』)
否则
「元」
)
而
虑「无」者
「子进程」之「成功运行」于『mkdir』于(「列」【『-p』,「输出目录」】)而
「:文言:构建恒并行二十四路,速耗俱省。汉语:编译器以并行模式、二十四路调度运行,用户要求构建并行度不低于二十。:」
虑「无」者
「成功运行带码」
于「编译器」
于(「列」【
「源码」,
『--package-context』,
「包上下文」,
『--do-not-load-cache』,
『--parallel』,
『-j』,
『24』,
『-o』,
「输出目录」附『/程序.wasm』
】)而
虑「无」者
「文件系统」之「写文件字节串」于(「输出目录」附『/值桥.wasm』)
于(「回收模块编码带名」于「回收值桥接」)
而
虑「来源目录」者
若「浏览器乎」则『豫言操作系统/宿主/浏览器/』否则『豫言操作系统/宿主/云工/』
而
虑「无」者「复制宿主文件」于「来源目录」于「输出目录」于『值桥.mjs』而
虑「无」者「复制宿主文件」于「来源目录」于「输出目录」于『句柄.mjs』而
虑「无」者「复制宿主文件」于「来源目录」于「输出目录」于『宿主.mjs』而
虑「无」者「复制宿主文件」于「来源目录」于「输出目录」于『入口.mjs』而
虑「无」者
「文件系统」之「写文件」
于(「输出目录」附『/接口核对.mjs』)
于(「文件系统」之「读文件」于『豫言操作系统/装载/接口核对.mjs』)而
「:文言:若包境含公约绑定,未封装双簿不可暗作空约而启客。汉语:带接口绑定的构建在装载包工具写入清单前保持不可启动状态。:」
虑「待封装乎」者
「是子字符串吗」于『dist/操作系统绑定/』于(「文件系统」之「读文件」于「包上下文」)而
虑「清单初文」者
若「待封装乎」则『{"待封装":true}』否则『[]』而
虑「无」者
「文件系统」之「写文件」于(「输出目录」附『/接口要求组.json』)于「清单初文」
而
虑「无」者
「文件系统」之「写文件」于(「输出目录」附『/宿主提供组.json』)于「清单初文」
而
虑「无」者
(
若「有服务入口乎」则(
虑「入口路径」者「输出目录」附『/入口.mjs』
而
虑「原文」者「文件系统」之「读文件」于「入口路径」
而
虑「无」者
「文件系统」之「写文件」
于「入口路径」
于(「原文」附「新行」附『// 文言:依构建参数别名导出通用服务入口;汉语:按应用配置导出通用服务入口。』附
「新行」
附『export {豫言服务入口 as 』附「服务入口名」附『};』附「新行」)
而
虑「查果」者
「子进程」之「成功运行」
于『node』
于(「列」【『--check』,「入口路径」】)
而
「元」
)否则「元」
)
而
虑「无」者
(
若「浏览器乎」则(
虑「无」者
「复制宿主文件」于「来源目录」于「输出目录」于『自动启动.mjs』
而
「复制宿主文件」于「来源目录」于「输出目录」于『工作线程自动启动.mjs』
)否则「复制宿主文件」于「来源目录」于「输出目录」于『平台资料.mjs』
)而
「:文言:执行配置乃可选之旁文,与入口源码同目录;有则验为 JSON 而书入 动态资源.mjs 之 执行配置,无则空对象,其义由宿主加载时验。旧壳不识此出,新壳遇旧器则默认,故新旧可混用。汉语:云工模式在应用目录(入口源码所在目录)查找可选的 `执行配置.json`,存在则经 JSON 解析后规范化(非法 JSON 使构建失败,并防注入),写成 `动态资源.mjs` 的导出常量 `执行配置`;缺文件时写 `{}`。旧版入口壳不读它,新版入口壳遇到缺少该导出的旧构建器产物时按默认时限运行,因此构建器与壳可以不同步升级。:」
虑「源码目录」者
「路径」之「获取文件夹名」于「源码」而
虑「执行配置路径」者
若「字符串相等吗」于「源码目录」于『』则『执行配置.json』否则「路径」之「路径合并」于「源码目录」于『执行配置.json』
而
虑「无」者
(
若「云工乎」则(
虑「无」者
「文件系统」之「写文件」
于(「输出目录」附『/许可.json』)
于(若「字符串相等吗」于「许可文件」于『-』则『{}』否则「文件系统」之「读文件」于「许可文件」)
而
虑「配置原文」者
若「文件系统」之「路径存在」于「执行配置路径」则(
若「文件系统」之「路径是普通文件」于「执行配置路径」则「文件系统」之「读文件」
于「执行配置路径」
否则
『{}』
)
否则
『{}』
而
虑「配置文」者「癸象表示」于(「癸象解析」于「配置原文」)
而
虑「源目录」者『豫言操作系统/宿主/云工/』
而
虑「源文」者
『export const 模块源码 = {』附「新行」附
『"隔离入口.mjs":』附(「癸象表示」
于(「癸象字符串」于(「文件系统」之「读文件」于(「源目录」附『隔离入口.mjs』))))附『,』附「新行」附
『"宿主.mjs":』附(「癸象表示」
于(「癸象字符串」于(「文件系统」之「读文件」于(「源目录」附『宿主.mjs』))))附『,』附「新行」附
『"句柄.mjs":』附(「癸象表示」
于(「癸象字符串」于(「文件系统」之「读文件」于(「源目录」附『句柄.mjs』))))附『,』附「新行」
附
『"值桥.mjs":』附(「癸象表示」
于(「癸象字符串」于(「文件系统」之「读文件」于(「源目录」附『值桥.mjs』))))附『,』附
「新行」
附
『"隔离运行客.mjs":』附(「癸象表示」
于(「癸象字符串」于(「文件系统」之「读文件」于(「源目录」附『隔离运行客.mjs』))))附
『,』附
「新行」附
『"编译宿主.mjs":』附(「癸象表示」
于(「癸象字符串」
于(「文件系统」之「读文件」于『豫言操作系统/宿主/浏览器/编译器/宿主.mjs』)))
附「新行」附『};』附「新行」
而
虑「桥字节」者
「文件系统」之「读文件字节串」于(「输出目录」附『/值桥.wasm』)
而
虑「桥数字」者
「间合」
于『,』
于(「态射」授以「整数」授以「字符串」
于(「整数范围」于「零」于(「字节串长度」于「桥字节」))
于(会「序」而「整数表示」于(「字节串取字节」于「桥字节」于「序」)))
而
「文件系统」之「写文件」
于(「输出目录」附『/动态资源.mjs』)
于(『// 文言:客源皆取宿主库;汉语:Dynamic Worker 固定模块源码与值桥字节由豫言构建器生成。』附「新行」附
「源文」
附『export const 值桥字节 = new Uint8Array([』附「桥数字」附『]).buffer;』附「新行」附
『export const 执行配置 = 』附「配置文」附『;』附「新行」)
)
否则
「元」
)
而
「打印行」于(『豫言』附「模式」附『产物已生成:』附「输出目录」)
也。