netherphp/onescript

一个愚蠢的 JavaScript 编译器。

v4.0.2 2021-08-12 22:44 UTC

README

一个愚蠢的 JavaScript "编译器"}

除了 JavaScript 之外,我更不喜欢的是其他人的 JavaScript 框架和构建系统。所以,就像一个完整的工具一样,我写了自己的工具,它以我通常构建脚本的方式工作。

用例

假设我们的网站项目设置如下。

  • 我们的项目根目录:/opt/website
  • 我们的公共根目录:/opt/website/www
  • 我们编写的一个 JS 库:/opt/website/www/share/mylib
  • 所以我们的壳通常位于 /opt/website

我们的 JS 库 mylib 结构如下。

  • src/mylib-main.js
  • src/mylib-whatever.js
  • src/libs/extension1.js
  • src/libs/extension2.js

快速开始

此库提供了一个供应商 bin 文件。在 Windows 上,您需要以 vendor\bin\nether-onescript 运行它,在其他任何东西上,您需要以 php vendor/bin/nether-onescript 调用它 - 我将使用 NotWindows 语法,因为任何理智的服务器都会使用。

php vendor/bin/nether-onescript help

创建一个新的 OneScript 项目。

OneScript 期望项目源文件位于 src 目录中。默认情况下,它将使用 libs 作为模块目录,寻找 js 扩展名。因此,对于上面的示例项目,所需的命令

php vendor/bin/nether-onescript create www/share/mylib \
--files=mylib-main.js,mylib-whatever.js

这将创建位于 www/share/jslib/onescript.json(可以通过 --filename 进行更改)- 在此 JSON 文件中,您可以查看可更改的所有选项。您会注意到它已经在文件选项中添加了您在命令行上列出的主文件,并在目录选项中自动列出 libs,在扩展选项中为 js。它还将输出文件设置为 onescript.js

通过 CLI 构建 OneScript 项目。

php vendor/bin/nether-onescript build www/share/mylib/onescript.json

假设没有错误,如文件权限或缺少文件,这将编译您的 OneScript 项目到 onescript.js - 您可能用于分发的最终文件。

构建系统是这样工作的

  • 加载 Files 并按您指定的顺序将它们合并到一个文件中。
  • 然后,它将遍历每个 Directories,寻找在 Extensions 中列出的扩展名的文件,并将它们合并到文件的末尾。它将把它作为您的 OutputFile 保存为最终产品。
  • 一旦完成 Minify 支持,它将将其传递到压缩过程以创建 OutputMinFile - 压缩功能尚未实现。

通过实时编译器构建 OneScript 项目。

有时,在您的开发服务器上,当您更改项目时自动构建项目很有用。对于我的示例,我可能会在我的 JS 项目文件夹中创建一个名为 onescript.js.php 的新文件。

$project = Nether\OneScript\Project::FromFile(sprintf(
	'%s/onescript.json',
	dirname(__FILE__)
));

$project->Print = true;
$project->Build();

如果您在脚本标签中引用此 onescript.js.php,则每次页面加载且文件已更改时,它都将构建。您真的不希望将其提交到生产空间。