netherphp / onescript
一个愚蠢的 JavaScript 编译器。
Requires
- php: >=8.0
- netherphp/console: >=3.0.0
- netherphp/object: >=3.0.0
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
,则每次页面加载且文件已更改时,它都将构建。您真的不希望将其提交到生产空间。