自动构建。豫
yuyan · 758 行 · 44462 字节 · 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 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758
寻观「标准库」之书。
寻观「标准库」之「数据结构」之「多态列工具」之书。
寻观「双宿主构建」之「文本工具」之书。
寻观「双宿主构建」之「包描述」之书。
寻观「双宿主构建」之「依赖解析」之书。
寻观「双宿主构建」之「上下文生成」之书。
寻观「双宿主构建」之「接口适配」之书。
寻观「双宿主构建」之「自动参数」之书。
寻观「双宿主构建」之「宿主构建」之书。
寻观「双宿主构建」之「节点打包」之书。
「:文言:自动模式之本体:读应用之包描述,循依赖而尽取其闭包,自绑诸接口,书包上下文,而后构建、装载。凡磁盘与子进程之事皆在此篇;判断之理在他篇,皆纯函数。汉语:自动模式的执行部分。流程:核对构建根与工具、规范化各路径、定位应用包描述(可把一致性验证目录里的 .txt 描述复制成临时应用目录)、扫描包根并传递解析依赖、逐个绑定操作系统接口、生成包上下文、构建应用(或只做类型检查)、装载接口清单。所有错误都是带原因与命令行的中文事故。:」
「最大扫描深度」者「一六」也。
「:文言:命令之全文,报错用。汉语:把程序与参数拼成一行命令文字,用于错误信息。:」
「命令行文字」乃化「字符串」而化(「列」于「字符串」)而「字符串」也。
「命令行文字」者会「程序」而会「参数们」而
「间合」于『 』于(「缀」于「程序」于「参数们」)
也。
「:文言:继承三流而行,非零则告其码与令。汉语:同步运行外部命令,子进程直接使用当前进程的标准输入输出;退出码非零时抛出带命令行与退出码的中文事故。:」
「须成功运行」乃化「字符串」而化「字符串」而化(「列」于「字符串」)而「有」也。
「须成功运行」者会「说明」而会「程序」而会「参数们」而
虑「码」者「子进程」之「运行并继承标准流」于「程序」于「参数们」而
若「等于」于「码」于「零」则
「元」
否则
「发生事故」于(「说明」附『失败(退出码 』附(「整数表示」于「码」)附『)。命令:』附(「命令行文字」
于「程序」于「参数们」))
也。
「:文言:目录存在乎;不存在则不问其为目录(免原生中止)。汉语:判断路径存在并且是目录;先判存在,避免对不存在的路径调用会中止的原生判断。:」
「目录存在吗」乃化「字符串」而「爻」也。
「目录存在吗」者会「位置」而
若「文件系统」之「路径存在」于「位置」则
「文件系统」之「路径是文件夹」于「位置」
否则
「阴」
也。
「普通文件存在吗」乃化「字符串」而「爻」也。
「普通文件存在吗」者会「位置」而
若「文件系统」之「路径存在」于「位置」则
「文件系统」之「路径是普通文件」于「位置」
否则
「阴」
也。
「:文言:路径之相对者,附于根。汉语:把相对路径接在构建根后面,绝对路径原样返回。:」
「绝对路径」乃化「字符串」而化「字符串」而「字符串」也。
「绝对路径」者会「根」而会「位置」而
若「路径」之「路径名是绝对路径」于「位置」则
「位置」
否则
「路径」之「路径合并」于「根」于「位置」
也。
「:文言:入其目录而问所在,则得真径,去符号链接与点点;毕而返原处。汉语:规范化目录路径:临时切换进程工作目录再读取当前目录(得到已解析符号链接的物理路径),然后切回原目录。包上下文要求规范的绝对路径,且同一份源码只能以一个路径出现(编译缓存按路径计)。:」
「规范目录」乃化「字符串」而「字符串」也。
「规范目录」者会「目录」而
虑「原处」者「文件系统」之「获取当前路径」于「元」而
虑「切」者「文件系统」之「切换当前路径」于「目录」而
若「不等于」于(「切」中「零」)于「零」则
「发生事故」于(『无法进入目录 』附「目录」附『:』附(「切」中「一」))
否则
(虑「实径」者「文件系统」之「获取当前路径」于「元」而虑「无」者「文件系统」之「切换当前路径」于「原处」而「实径」)
也。
「:文言:文件之规范径,规范其目录而接其名。汉语:规范化文件路径:规范其所在目录再接上文件名(文件本身不应是符号链接)。:」
「规范文件」乃化「字符串」而「字符串」也。
「规范文件」者会「文件」而
「路径」之「路径合并」
于(「规范目录」于(「路径」之「获取文件夹名」于「文件」))
于(「路径」之「获取文件名」于「文件」)
也。
「:文言:内置基础库之节点:名、构建根下之规范包文件、所依。汉语:内置基础库的包节点:包名、构建根下的规范包描述路径与依赖名。:」
「基础库节点」乃化「字符串」而化「字符串」而「包节点」也。
「基础库节点」者会「根」而会「名」而
「名」
与(「规范文件」于(「路径」之「路径合并」于「根」于(『库/』附「名」附『/』附「名」附『。包。豫』)))
与(「内置基础库依赖们」于「名」)
也。
「:文言:核对当前目录确为构建根。汉语:构建根必须含 库/标准库 与 库/癸象工具(内置基础库之一)。:」
「核验构建根」乃化「字符串」而「有」也。
「核验构建根」者会「根」而
若「且」
于(「普通文件存在吗」于(「路径」之「路径合并」于「根」于『库/标准库/标准库。包。豫』))
于(「普通文件存在吗」于(「路径」之「路径合并」于「根」于『库/癸象工具/癸象工具。包。豫』))
则
「元」
否则
「发生事故」于(『当前目录不是构建根:缺少 库/标准库/标准库。包。豫 或 库/癸象工具/癸象工具。包。豫。请在含 库/、豫言操作系统接口/、豫言操作系统/适配/ 以及 yy3_bs、yy豫言操作系统绑定、yy豫言操作系统装载包 的目录运行。当前目录:』
附「根」)
也。
「:文言:工具须可行。汉语:检查外部工具存在且可执行,缺少时提示先构建。:」
「须有工具」乃化「字符串」而化「字符串」而「有」也。
「须有工具」者会「位置」而会「用途」而
「:文言:.wasm 之具由 Node 宿主行之,存为常文即可,不问可执行位。汉语:以 .wasm 结尾的工具(编译器与各 WasmGC 工具)由 Node 宿主运行,只要是普通文件即可,不要求可执行位。:」
若「或者」
于(「文件系统」之「路径可执行」于「位置」)
于(「且」于(「串结尾是它吗」于『.wasm』于「位置」)于(「普通文件存在吗」于「位置」))
则
「元」
否则
「发生事故」于(『缺少可执行文件 』附「位置」附『(』附「用途」附『)。请在构建根目录运行,并先构建该工具。』)
也。
「须有文件」乃化「字符串」而化「字符串」而「有」也。
「须有文件」者会「位置」而会「用途」而
若「普通文件存在吗」于「位置」则
「元」
否则
「发生事故」于(『缺少文件 』附「位置」附『(』附「用途」附『)』)
也。
「:文言:目录必存。汉语:把用户给出的目录解析成规范绝对路径;不存在或不是目录时抛出中文事故,「用途」说明它是什么目录。:」
「解析已有目录」乃化「字符串」而化「字符串」而化「字符串」而「字符串」也。
「解析已有目录」者会「根」而会「位置」而会「用途」而
虑「绝对」者「绝对路径」于「根」于「位置」而
若「目录存在吗」于「绝对」则
「规范目录」于「绝对」
否则
「发生事故」于(「用途」附『不存在或不是目录:』附「位置」)
也。
「:文言:应用目录之包描述:恰有一个 。包。豫;无之,则恰有一个 。包。豫.txt。汉语:在应用目录里定位包描述文件,返回(文件名,是否 .txt)。规则:恰有一个「名。包。豫」就用它;没有时恰有一个「名。包。豫.txt」(语言仓一致性验证目录用它避开全仓库包发现);否则抛出列出实际文件的中文事故。:」
「定位应用包描述」乃化「字符串」而(「字符串」合「爻」)也。
「定位应用包描述」者会「应用目录」而
虑「文件们」者
「排序字符串」于(「滤」授以「字符串」于「可扫描条目吗」于(「文件系统」之「读文件夹」于「应用目录」))而
虑「包们」者
「滤」授以「字符串」
于(会「文」而「串结尾是它吗」于『。包。豫』于「文」)于「文件们」而
虑「文本们」者
「滤」授以「字符串」
于(会「文」而「串结尾是它吗」于『。包。豫.txt』于「文」)
于「文件们」而
鉴「包们」而
有(「缀」于「唯一」于「罄」)则「唯一」与「阴」
或有(「缀」于「首」于(「缀」于「次」于「余」))则
「发生事故」于(『应用目录 』附「应用目录」附『 里有多个包描述(。包。豫):』附(「顿号连接」于「包们」)附
『。应用目录必须恰有一个。』)
或有「罄」则(
鉴「文本们」而
有(「缀」于「唯一」于「罄」)则「唯一」与「阳」
或有「罄」则「发生事故」于(『应用目录 』附「应用目录」附
『 里没有包描述:需要恰有一个「名。包。豫」(或一致性验证目录用的「名。包。豫.txt」)。』)
或有「其他」则
「发生事故」于(『应用目录 』附「应用目录」附『 里有多个 。包。豫.txt 包描述:』附(「顿号连接」
于「文本们」)附『。应用目录必须恰有一个。』)
)
也。
「:文言:一致性验证之 .txt 描述,复制应用目录于构建根内之临时处,而复其本名。汉语:把应用目录复制到临时目录(保留符号链接),并把 名。包。豫.txt 改回 名。包。豫,返回临时应用目录。:」
「复制文本描述应用」乃化「字符串」而化「字符串」而化「字符串」而「字符串」也。
「复制文本描述应用」者会「临时根」而会「应用目录」而会「文本名」而
虑「临时应用」者「路径」之「路径合并」于「临时根」于『应用』而
虑「无」者
「子进程」之「成功运行」于『cp』于(「列」【『-R』,「应用目录」,「临时应用」】)而
虑「无」者
「子进程」之「成功运行」
于『mv』
于(「列」【
(「路径」之「路径合并」于「临时应用」于「文本名」),
(「路径」之「路径合并」于「临时应用」于(「去除串结尾」于『.txt』于「文本名」))
】)
而
「临时应用」
也。
「:文言:包根之扫,深有限,隐目录与 node_modules 不入;断链不问。汉语:递归扫描一个规范绝对目录,收集所有「名。包。豫」,返回(包名,规范文件路径)列表;深度上限防止符号链接成环,隐藏目录与 node_modules 跳过,指向不存在处的断链忽略。:」
「扫描目录」乃化「字符串」而化「整数」而(「列」于「已找包」)也。
「扫描目录」者会「目录」而会「深度」而
若「大于」于「深度」于「最大扫描深度」则
「罄」授以「已找包」
否则
虑「条目们」者
「排序字符串」于(「滤」授以「字符串」于「可扫描条目吗」于(「文件系统」之「读文件夹」于「目录」))
而
「串联」授以「已找包」于(「态射」授以「字符串」授以(「列」于「已找包」)
于「条目们」
于(会「条目」
而
虑「全路径」者「路径」之「路径合并」于「目录」于「条目」而
若「非」于(「文件系统」之「路径存在」于「全路径」)则
「罄」授以「已找包」
否则若「文件系统」之「路径是文件夹」于「全路径」则
「扫描目录」于「全路径」于(「加」于「深度」于「一」)
否则若「且」于(「文件系统」之「路径是普通文件」于「全路径」)
于(「串结尾是它吗」于『。包。豫』于「条目」)
则
「列」【((「去除串结尾」于『。包。豫』于「条目」)与(「规范文件」于「全路径」))】
否则
「罄」授以「已找包」
))
也。
「读包描述」乃化「字符串」而「包描述」也。
「读包描述」者会「文件」而
若「普通文件存在吗」于「文件」则
「解析包描述」于「文件」于(「文件系统」之「读文件」于「文件」)
否则
「发生事故」于(『找不到包描述文件:』附「文件」)
也。
「:文言:受保护之径,若同于输出或在其下,则拒。汉语:如果某个受保护目录等于输出目录或位于输出目录之下,说明删除输出目录会连带删除它,抛出中文事故。:」
「须不含受保护目录」乃
化「字符串」而
化「字符串」而
化(「列」于「字符串」)而
「有」
也。
「须不含受保护目录」者会「输出」而会「实径」而会「受保护们」而
鉴「受保护们」而
有「罄」则「元」
或有(「缀」于「首」于「余」)则
若「或者」于(「字符串相等吗」于「首」于「实径」)于(「串开头是它吗」于(「实径」附『/』)于「首」)
则
「发生事故」于(『拒绝删除输出目录 』附「实径」附『:它包含或就是受保护的目录 』附「首」附
『(构建根、应用目录或包根)』)
否则
「须不含受保护目录」于「输出」于「实径」于「余」
也。
「:文言:输出目录将被删除,故先验:名不可为空、点、点点;不可含构建根、应用目录或诸包根。汉语:删除输出目录前的安全检查:输出名不能是空、. 或 ..;输出目录必须不存在或是目录;不能位于自动模式的临时区 dist/.自动构建 内;也不能是构建根、应用目录、包根本身或它们的上级目录。返回输出目录的绝对路径。:」
「核验输出目录」乃
化「字符串」而
化「字符串」而
化(「列」于「字符串」)而
「字符串」
也。
「核验输出目录」者会「根」而会「输出」而会「受保护们」而
虑「名」者「路径末段」于「输出」而
虑「无」者
(
若「或者」
于(「字符串相等吗」于「名」于『』)
于(「或者」于(「字符串相等吗」于「名」于『.』)于(「字符串相等吗」于「名」于『..』))则
「发生事故」于(『输出目录的最后一段不能是空、. 或 ..:』附「输出」)
否则
「元」
)而
虑「绝对」者「去尾斜杠」于(「绝对路径」于「根」于「输出」)而
虑「实径」者
若「文件系统」之「路径存在」于「绝对」
则
(
若「文件系统」之「路径是文件夹」于「绝对」则
「规范目录」于「绝对」
否则
「发生事故」于(『输出目录已存在且不是目录:』附「输出」)
)
否则
(
虑「上级」者「路径」之「获取文件夹名」于「绝对」
而
若「目录存在吗」于「上级」则
「路径」之「路径合并」于(「规范目录」于「上级」)于「名」
否则
「绝对」
)
而
虑「无」者
(若「字符串相等吗」于「实径」于『/』则「发生事故」于『输出目录不能是根目录』否则「元」)
而
虑「无」者
(
若「串开头是它吗」于(「根」附『/dist/.自动构建/』)于(「实径」附『/』)则
「发生事故」于(『输出目录不能位于自动模式的临时区 dist/.自动构建 内:』附「输出」)
否则
「元」
)
而
虑「无」者「须不含受保护目录」于「输出」于「实径」于「受保护们」而
「实径」
也。
「:文言:先验一接口之目录与适配,得绑定之计。汉语:规划一个接口的绑定:检查接口目录、按宿主模式选适配目录、核对三个必需文件存在。找不到接口或适配时抛出说明已找位置的中文事故;此步不执行任何命令。:」
「规划接口绑定」乃化「字符串」而化「字符串」而「绑定计划」也。
「规划接口绑定」者会「模式」而会「接口名」而
虑「接口目录」者『豫言操作系统接口/』附「接口名」而
虑「无」者
(
若「目录存在吗」于「接口目录」则
「元」
否则
「发生事故」于(『依赖 豫言操作系统』附「接口名」附『 需要接口目录 』附「接口目录」附『,构建根里没有它』)
)而
虑「模块名」者
「接口模块名」于「接口名」于(「文件系统」之「读文件夹」于「接口目录」)
而
虑「候选们」者「适配候选们」于「模式」于「接口名」而
虑「另一宿主」者
若「字符串相等吗」于「模式」于『云工』则『浏览器』否则『云工』
而
虑「适配名」者
「选择适配」于「候选们」于(会「名」而「目录存在吗」于(『豫言操作系统/适配/』附「名」))
而
虑「选定」者鉴「适配名」而
有(「可有」于「名」)则「名」
或有「可无」则
「发生事故」于(『接口「』附「接口名」附『」没有可用于「』附「模式」附
『」模式的适配:已找 豫言操作系统/适配/ 下的 』附(「顿号连接」于「候选们」)附(
若「目录存在吗」于(『豫言操作系统/适配/』附「接口名」附「另一宿主」)则
(『;存在「』附「接口名」附「另一宿主」附『」适配,但它只用于「』附「另一宿主」附『」模式』)
否则
『』
)附『。』)
而
虑「计划」者「规划绑定」于「接口名」于「模块名」于「选定」而
虑「无」者「须有文件」于(「绑定接口包」于「计划」)于『接口包描述』而
虑「无」者「须有文件」于(「绑定适配包」于「计划」)于『适配包描述』而
虑「无」者
「须有文件」于(「绑定实现模块」于「计划」)于『适配实现模块』
而
「计划」
也。
「:文言:先去旧出,后行绑定。汉语:执行一个绑定计划:删除旧的绑定输出目录,再运行 yy豫言操作系统绑定;子进程继承标准输出,失败时抛出带命令行与退出码的中文事故。:」
「执行绑定」乃化「绑定计划」而「有」也。
「执行绑定」者会「计划」而
虑「输出」者「绑定输出目录」于「计划」而
虑「无」者
「子进程」之「成功运行」于『rm』于(「列」【『-rf』,「输出」】)
而
「须成功运行」
于『绑定操作系统接口』
于(「工具路径」于『yy豫言操作系统绑定』)
于(「列」【(「绑定接口包」于「计划」),(「绑定适配包」于「计划」),(「绑定实现模块」于「计划」),「输出」】)
也。
「逐个执行绑定」乃化(「列」于「绑定计划」)而「有」也。
「逐个执行绑定」者会「计划们」而
鉴「计划们」而
有「罄」则「元」
或有(「缀」于「首」于「尾」)则
((「执行绑定」于「首」);
(「逐个执行绑定」于「尾」))
也。
「:文言:接口包描述之径。汉语:接口 XXX 的规范包描述路径(相对构建根)。:」
「接口包描述路径」乃化「字符串」而「字符串」也。
「接口包描述路径」者会「接口名」而
『豫言操作系统接口/』附「接口名」附『/豫言操作系统』附「接口名」附『。包。豫』
也。
「:文言:一接口所依之他接口,取其包描述之依赖而择冠豫言操作系统者。汉语:读取接口包描述的依赖,返回其中的操作系统接口名(如文件、网络依赖基础)。:」
「接口的接口依赖们」乃化「字符串」而(「列」于「字符串」)也。
「接口的接口依赖们」者会「接口名」而
「滤出可有」授以「字符串」
于(「态射」授以「字符串」授以(「或可有」于「字符串」)
于(「包描述依赖们」于(「读包描述」于(「接口包描述路径」于「接口名」)))
于「接口依赖名」)
也。
「:文言:补全接口之闭包:所需之接口所依之接口亦须绑定。汉语:接口的传递闭包:应用直接或经库依赖的接口,再加上这些接口包自己依赖的接口(递归),已见的不重复。:」
「补全接口闭包」乃
化(「列」于「字符串」)而
化(「列」于「字符串」)而
(「列」于「字符串」)
也。
「补全接口闭包」者会「已有」而会「待」而
鉴「待」而
有「罄」则「已有」
或有(「缀」于「首」于「余」)则
若「列含串」于「已有」于「首」则
「补全接口闭包」于「已有」于「余」
否则
「补全接口闭包」
于(「缀」于「首」于「已有」)
于(「附加」授以「字符串」于(「接口的接口依赖们」于「首」)于「余」)
也。
「:文言:节点之绑定计,惟据宿主支持清单;应用所供者不绑,返无。汉语:节点模式规划一个接口的绑定:接口必须列在 Node 宿主支持清单里(否则报错),适配目录取清单所写;接口可有多个模块,实现模块与之同名;清单里适配写 - 的接口由应用提供,不绑定,返回无。:」
「规划节点接口绑定」乃
化(「列」于「节点支持项」)而
化「字符串」而
(「或可有」于「多模块绑定计划」)
也。
「规划节点接口绑定」者会「支持表」而会「接口名」而
虑「接口目录」者『豫言操作系统接口/』附「接口名」而
虑「无」者
(
若「目录存在吗」于「接口目录」则
「元」
否则
「发生事故」于(『依赖 豫言操作系统』附「接口名」附『 需要接口目录 』附「接口目录」附『,构建根里没有它』)
)而
鉴(「查节点支持」于「支持表」于「接口名」)而
有「可无」则
「发生事故」授以(「或可有」于「多模块绑定计划」)
于(『Node 宿主不支持接口「』附「接口名」附『」:它不在 』附「节点支持表路径」附『 里』)
或有(「可有」于「项」)则
若「应用提供支持吗」于「项」则
(「可无」授以「多模块绑定计划」)
否则
(
虑「计划」者
「规划多模块绑定」
于「接口名」
于(「接口模块名们」于「接口名」于(「文件系统」之「读文件夹」于「接口目录」))
于(「项」中「一」)
而
虑「无」者「须有文件」于(「计划」中「零」)于『接口包描述』
而
虑「无」者「须有文件」于(「计划」中「一」)于『适配包描述』
而
虑「无」者
「态射」授以「字符串」授以「有」
于(「计划」中「二」)
于(会「模块」而「须有文件」于「模块」于『适配实现模块』)
而
「可有」授以「多模块绑定计划」于「计划」
)
也。
「:文言:多模块之绑定:先去旧出,后以诸实现模块行绑定之具。汉语:执行一个多模块绑定计划:删除旧的绑定输出目录,再把全部实现模块交给 yy豫言操作系统绑定。:」
「执行多模块绑定」乃化「多模块绑定计划」而「有」也。
「执行多模块绑定」者会「计划」而
虑「输出」者「计划」中「三」而
虑「无」者
「子进程」之「成功运行」于『rm』于(「列」【『-rf』,「输出」】)
而
「须成功运行」
于『绑定操作系统接口』
于(「工具路径」于『yy豫言操作系统绑定』)
于(「缀」
于(「计划」中「零」)
于(「缀」于(「计划」中「一」)于(「附加」授以「字符串」于(「计划」中「二」)于(「列」【「输出」】))))
也。
「:文言:只验类,不出产物。汉语:只做类型检查:对应用入口运行编译器的 --type-check-only,不生成产物;类型错误由编译器直接打印到当前终端。:」
「类型检查应用」乃化「字符串」而化「字符串」而化「字符串」而「有」也。
「类型检查应用」者会「编译器」而会「入口」而会「上下文」而
(「须成功运行」
于『类型检查』
于「编译器」
于(「列」【「入口」,『--package-context』,「上下文」,『--type-check-only』,『--parallel』,『-j』,『24』】));
(「打印行」于(『类型检查通过:』附「入口」))
也。
「:文言:许可文件之取舍:浏览器恒无;云工者,明示者从之,否则取应用目录之许可.json,无则无。汉语:决定传给旧构建形式的许可文件参数:浏览器模式恒为 -;云工模式优先用 --许可,其次用应用目录里的 许可.json(存在时),否则是 -。:」
「决定许可文件」乃化「字符串」而化「字符串」而化「字符串」而「字符串」也。
「决定许可文件」者会「模式」而会「明示」而会「应用目录」而
若「字符串相等吗」于「模式」于『浏览器』则
『-』
否则若「非」于(「字符串相等吗」于「明示」于『』)则
「明示」
否则
(
虑「默认」者「路径」之「路径合并」于「应用目录」于『许可.json』
而
若「普通文件存在吗」于「默认」则「默认」否则『-』
)
也。
「:文言:绑定之出,皆在 dist/操作系统绑定/接口名。汉语:某接口绑定输出目录(相对构建根),装载包工具按目录名识别接口。:」
「绑定目录」乃化「字符串」而「字符串」也。
「绑定目录」者会「接口名」而
『dist/操作系统绑定/』附「接口名」
也。
「:文言:绑定所出之包描述,取其规范径。汉语:接口绑定生成的包描述文件的规范绝对路径,用于包上下文。:」
「绑定包文件」乃化「字符串」而化「字符串」而「字符串」也。
「绑定包文件」者会「根」而会「接口名」而
「规范文件」于(「路径」之「路径合并」
于「根」
于((「绑定目录」于「接口名」)附『/豫言操作系统』附「接口名」附『。包。豫』))
也。
「:文言:节点之绑定在隐目,余模式循旧。汉语:按宿主模式取绑定输出目录:节点模式在 dist/.节点绑定(见接口适配篇),其余模式照旧在 dist/操作系统绑定。:」
「按模式绑定目录」乃化「字符串」而化「字符串」而「字符串」也。
「按模式绑定目录」者会「模式」而会「接口名」而
若「字符串相等吗」于「模式」于『节点』则
「节点绑定根」附「接口名」
否则
「绑定目录」于「接口名」
也。
「按模式绑定包文件」乃化「字符串」而化「字符串」而化「字符串」而「字符串」也。
「按模式绑定包文件」者会「根」而会「模式」而会「接口名」而
「规范文件」于(「路径」之「路径合并」
于「根」
于((「按模式绑定目录」于「模式」于「接口名」)附『/豫言操作系统』附「接口名」附『。包。豫』))
也。
「:文言:构建前先验诸材料,缺则明告。汉语:构建(非只类型检查)前核对构建根材料:装载包工具、宿主外壳源码。编译器直接写出 Wasm 二进制,客体运行时在编译器内;值桥由本工具直接写出,不再需要组装工具与值桥源码。:」
「核验构建材料」乃化「字符串」而化「字符串」而「有」也。
「核验构建材料」者会「根」而会「模式」而
虑「无」者
「须有工具」于(「工具路径」于『yy豫言操作系统装载包』)于『封装接口清单』而
虑「无」者
「须有文件」
于(「路径」之「路径合并」
于「根」
于(
若「字符串相等吗」于「模式」于『浏览器』则
『豫言操作系统/宿主/浏览器/入口.mjs』
否则若「字符串相等吗」于「模式」于『节点』则
『豫言操作系统/宿主/节点/应用宿主.mjs』
否则
『豫言操作系统/宿主/云工/入口.mjs』))于『宿主外壳源码』
而
「:文言:节点之启动文件内联云工之值桥、句柄表与装载核对,并据支持表嵌诸清单。汉语:节点模式的启动文件还要内联云工值桥、句柄表与接口核对三个共用模块,并按宿主支持清单嵌入各接口清单。:」
虑「无」者
(
若「字符串相等吗」于「模式」于『节点』则
「态射」授以「字符串」授以「有」
于(「列」【
『豫言操作系统/宿主/云工/值桥.mjs』,
『豫言操作系统/宿主/云工/句柄.mjs』,
『豫言操作系统/装载/接口核对.mjs』,
「节点支持表路径」
】)
于(会「文件」而「须有文件」于(「路径」之「路径合并」于「根」于「文件」)于『节点宿主材料』)
否则
(「罄」授以「有」)
)
而
「元」
也。
「:文言:自动之构建:全程一命。汉语:自动模式主流程,参数是已校验的自动选项,当前目录必须是构建根。:」
「执行自动构建」乃化「自动选项」而「有」也。
「执行自动构建」者会「选项」而
虑「模式」者「选项模式」于「选项」而
虑「根」者「文件系统」之「获取当前路径」于「元」而
虑「无」者「核验构建根」于「根」而
虑「编译器」者「选项编译器」于「选项」而
虑「无」者「须有工具」于「编译器」于『编译器;可用 --编译器 指定』而
虑「无」者
(若「选项类型检查」于「选项」则「元」否则「核验构建材料」于「根」于「模式」)而
虑「应用原目录」者
「解析已有目录」于「根」于(「选项应用目录」于「选项」)于『应用目录』
而
虑「无」者
(
若「或者」
于(「字符串相等吗」于(「选项许可」于「选项」)于『』)
于(「字符串相等吗」于(「选项许可」于「选项」)于『-』)则
「元」
否则
「须有文件」
于(「绝对路径」于「根」于(「选项许可」于「选项」))
于『许可文件』
)
而
虑「包根们」者
「去重字符串」
于(「态射」授以「字符串」授以「字符串」
于(「选项包根们」于「选项」)
于(会「位置」而「解析已有目录」于「根」于「位置」于『包根目录』))
于(「罄」授以「字符串」)
而
虑「输出绝对」者
「核验输出目录」
于「根」
于(「选项输出目录」于「选项」)
于(「缀」于「根」于(「缀」于「应用原目录」于「包根们」))
而
虑「输出待删」者
「去尾斜杠」于(「绝对路径」于「根」于(「选项输出目录」于「选项」))
而
虑「输出名」者「路径末段」于(「选项输出目录」于「选项」)而
虑「临时根」者
「路径」之「路径合并」于「根」于(『dist/.自动构建/』附「输出名」)
而
虑「包文件名与文本」者「定位应用包描述」于「应用原目录」而
虑「文本描述」者「包文件名与文本」中「一」而
虑「无」者
「子进程」之「成功运行」于『rm』于(「列」【『-rf』,「临时根」】)
而
虑「无」者
「子进程」之「成功运行」于『mkdir』于(「列」【『-p』,「临时根」】)
而
虑「应用目录」者
若「文本描述」则「复制文本描述应用」于「临时根」于「应用原目录」
于(「包文件名与文本」中「零」)
否则
「应用原目录」
而
虑「应用包文件」者
「路径」之「路径合并」
于「应用目录」
于(若「文本描述」则「去除串结尾」于『.txt』于(「包文件名与文本」中「零」)否则(「包文件名与文本」中「零」))
而
虑「应用入口」者「路径」之「路径合并」于「应用目录」于『入口。豫』而
虑「无」者「须有文件」于「应用入口」于『应用入口源码』而
虑「应用描述」者「读包描述」于「应用包文件」而
虑「无」者「核验所有者」于「应用包文件」于「应用描述」而
虑「应用节点」者(「包描述名称」于「应用描述」)与「应用包文件」与(「包描述依赖们」于「应用描述」)而
虑「包表」者
「串联」授以「已找包」于(「态射」授以「字符串」授以(「列」于「已找包」)
于「包根们」
于(会「包根」而「扫描目录」于「包根」于「零」))
而
虑「解析」者
「解析依赖」于「包表」于「包根们」于「读包描述」于「应用节点」
而
「:文言:接口之闭包:所依接口之所依者并入。汉语:接口按传递闭包收齐(如文件、网络依赖基础),再按字节序排列。:」
虑「接口们」者
「排序字符串」于(「补全接口闭包」于(「罄」授以「字符串」)于(「解析结果接口们」于「解析」))
而
虑「节点们」者
「解析结果节点们」于「解析」而
虑「节点乎」者「字符串相等吗」于「模式」于『节点』而
虑「无」者
「打印行」于(『自动构建:』附「模式」附『应用「』附(「包描述名称」于「应用描述」)附『」,应用目录 』附
「应用目录」)
而
虑「无」者
「打印行」于(『依赖闭包:库与应用共 』附(「整数表示」于(「长度」授以「包节点」于「节点们」))附『 个包(』附(「顿号连接」
于(「态射」授以「包节点」授以「字符串」于「节点们」于「包节点名」))附『);操作系统接口 』附(「整数表示」
于(「长度」授以「字符串」于「接口们」))附『 个(』附(「顿号连接」于「接口们」)附『)』)
而
「:文言:节点之绑定据宿主支持清单,余模式循旧。汉语:节点模式按 Node 宿主支持清单选适配(可多模块,应用提供的接口不绑定);云工与浏览器模式照旧按目录名选适配。:」
虑「支持表」者
若「节点乎」则
「解析节点支持表」于(「文件系统」之「读文件」于「节点支持表路径」)
否则
(「罄」授以「节点支持项」)
而
虑「节点计划们」者
若「节点乎」则
「态射」授以「字符串」授以(「字符串」合(「或可有」于「多模块绑定计划」))
于「接口们」
于(会「接口名」而「接口名」与(「规划节点接口绑定」于「支持表」于「接口名」))
否则
(「罄」授以(「字符串」合(「或可有」于「多模块绑定计划」)))
而
虑「应用提供们」者
「态射」授以(「字符串」合(「或可有」于「多模块绑定计划」))授以「字符串」
于(「滤」授以(「字符串」合(「或可有」于「多模块绑定计划」))
于(会「项」而鉴(「项」中「一」)而
有「可无」则「阳」
或有「其他」则「阴」)
于「节点计划们」)
于(会「项」而「项」中「零」)
而
虑「绑定接口们」者
「滤」授以「字符串」
于(会「名」而「非」于(「列含串」于「应用提供们」于「名」))
于「接口们」
而
虑「计划们」者
若「节点乎」则
(「罄」授以「绑定计划」)
否则
「态射」授以「字符串」授以「绑定计划」
于「接口们」
于(会「接口名」而「规划接口绑定」于「模式」于「接口名」)
而
虑「无」者
(
若「等于」于(「长度」授以「字符串」于「绑定接口们」)于「零」则
「元」
否则
「须有工具」于(「工具路径」于『yy豫言操作系统绑定』)于『绑定操作系统接口』
)
而
虑「无」者
「逐个执行绑定」于「计划们」而
虑「无」者
「态射」授以(「字符串」合(「或可有」于「多模块绑定计划」))授以「有」
于「节点计划们」
于(会「项」而鉴(「项」中「一」)而
有(「可有」于「计划」)则「执行多模块绑定」于「计划」
或有「其他」则「元」)
而
虑「标准库包」者
「规范文件」于(「路径」之「路径合并」于「根」于『库/标准库/标准库。包。豫』)
而
虑「基础库们」者
「态射」授以「字符串」授以「包节点」
于「内置基础库名们」
于(会「名」而「基础库节点」于「根」于「名」)
而
「:文言:绑定包之行附其所依接口;应用所供之接口直指其规范包。汉语:每个接口一行:绑定包描述路径,并附上该接口依赖的其他接口;应用提供的接口没有绑定,直接指向规范包描述。:」
虑「绑定包们」者
「态射」授以「字符串」授以「上下文接口」
于「接口们」
于(会「接口名」而
「接口名」
与(
若「列含串」于「应用提供们」于「接口名」则
「规范文件」于(「路径」之「路径合并」于「根」于(「接口包描述路径」于「接口名」))
否则
「按模式绑定包文件」于「根」于「模式」于「接口名」
)
与(「态射」授以「字符串」授以「字符串」
于(「接口的接口依赖们」于「接口名」)
于(会「依」而『豫言操作系统』附「依」)))
而
虑「上下文文件」者
「路径」之「路径合并」于「临时根」于『包上下文』而
虑「无」者
「文件系统」之「写文件」
于「上下文文件」
于(「生成带接口依赖上下文」于「标准库包」于「基础库们」于「绑定包们」于「节点们」)
而
虑「无」者「打印行」于(『包上下文:』附「上下文文件」)而
若「选项类型检查」于「选项」则
「类型检查应用」于「编译器」于「应用入口」于「上下文文件」
否则若「节点乎」则(
虑「无」者
「子进程」之「成功运行」于『rm』于(「列」【『-rf』,「输出待删」】)
而
虑「无」者
「构建节点发行包」
于「应用入口」
于(「选项输出目录」于「选项」)
于「编译器」
于「上下文文件」
于(「态射」授以「字符串」授以「字符串」于「绑定接口们」于(会「名」而「按模式绑定目录」于「模式」于「名」))
于「应用提供们」
而
「打印行」于(『应用已建:』附「输出绝对」)
)
否则
(
虑「无」者
「子进程」之「成功运行」于『rm』于(「列」【『-rf』,「输出待删」】)
而
虑「无」者
「按宿主构建」
于「模式」
于「应用入口」
于(「选项输出目录」于「选项」)
于「编译器」
于「上下文文件」
于(「决定许可文件」于「模式」于(「选项许可」于「选项」)于「应用目录」)
于(「选项命名入口」于「选项」)
而
虑「无」者
「须成功运行」
于『装载接口清单』
于(「工具路径」于『yy豫言操作系统装载包』)
于(「缀」
于(「选项输出目录」于「选项」)
于(「态射」授以「字符串」授以「字符串」于「接口们」于「绑定目录」))
而
「打印行」于(『应用已建:』附「输出绝对」)
)
也。
「:文言:自动模式之门:凡事故皆以中文书于误流,而退出一。汉语:自动模式入口:解析命令行并执行;任何中文事故都打印到标准错误并以退出码 1 结束。:」
「运行自动模式」乃化(「列」于「字符串」)而「有」也。
「运行自动模式」者会「参数们」而
「尝试运行」授以「有」
于(会「无」而「执行自动构建」于(「解析自动参数」于「参数们」))
于(会「信息」而
(「标准错误打印行」于(『yy双宿主构建(自动模式)失败:』附「信息」));
(「进程」之「退出」于「一」))
也。