完成打包和最小化格式化

This commit is contained in:
2022-11-19 10:49:15 +08:00
parent de5697afa9
commit f74d3a7ad9
4 changed files with 59 additions and 16 deletions

View File

@@ -74,7 +74,6 @@ if (!function_exists('xdebug')) {
function xdebug($data, $type = 'xdebug', $suffix = null, $force = false, $file = null) function xdebug($data, $type = 'xdebug', $suffix = null, $force = false, $file = null)
{ {
// 调试 // 调试
__DIR__;
!is_dir(runtime_path() . 'xdebug/') && mkdir(runtime_path() . 'xdebug/'); !is_dir(runtime_path() . 'xdebug/') && mkdir(runtime_path() . 'xdebug/');
if (is_null($file)) { if (is_null($file)) {
$file = is_null($suffix) ? runtime_path() . 'xdebug/' . date('Ymd') . '.txt' : runtime_path() . 'xdebug/' . date('Ymd') . "_{$suffix}" . '.txt'; $file = is_null($suffix) ? runtime_path() . 'xdebug/' . date('Ymd') . '.txt' : runtime_path() . 'xdebug/' . date('Ymd') . "_{$suffix}" . '.txt';

View File

@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace app\common\command\build; namespace app\common\command\build;
use app\common\tools\PathTools; use app\common\tools\PathTools;
use app\common\tools\phpparser\MinifyPrinterTools;
use app\common\tools\phpparser\NodeVisitorTools; use app\common\tools\phpparser\NodeVisitorTools;
use League\Flysystem\Adapter\Local; use League\Flysystem\Adapter\Local;
use League\Flysystem\Filesystem; use League\Flysystem\Filesystem;
@@ -158,9 +159,9 @@ class Dist extends Command
PathTools::intiDir($lib_php_path); PathTools::intiDir($lib_php_path);
$this->buildIncludeIndexFile([ $this->buildIncludeIndexFile([
$lib_function_file,
$lib_dir_const_file, $lib_dir_const_file,
$lib_php_file, $lib_php_file,
$lib_function_file,
]); ]);
@@ -206,18 +207,13 @@ class Dist extends Command
)); ));
} }
$prettyPrinter = new Standard(); $prettyPrinter = new MinifyPrinterTools();
$dir_const_code = $prettyPrinter->prettyPrintFile($dir_const_stmts); $dir_const_code = $prettyPrinter->prettyPrintFile($dir_const_stmts);
file_put_contents($lib_dir_const_path, $dir_const_code); file_put_contents($lib_dir_const_path, $dir_const_code);
} }
public function buildDirConstCode($stmt)
{
# code...
}
public function buildFunctionFile($lib_function_path) public function buildFunctionFile($lib_function_path)
{ {
$function_path = Config::get('dist.function_path', []); $function_path = Config::get('dist.function_path', []);
@@ -257,8 +253,8 @@ class Dist extends Command
return new ConstFetch(new Name($const_key)); return new ConstFetch(new Name($const_key));
} }
if($node instanceof Comment){ if ($node->hasAttribute('comments')) {
return NodeTraverser::REMOVE_NODE; $node->setAttribute('comments', []);
} }
} }
}); });
@@ -272,7 +268,7 @@ class Dist extends Command
} }
$prettyPrinter = new Standard(); $prettyPrinter = new MinifyPrinterTools();
$function_code = $prettyPrinter->prettyPrintFile($function_stmts); $function_code = $prettyPrinter->prettyPrintFile($function_stmts);
@@ -303,7 +299,7 @@ class Dist extends Command
foreach ($files as $file_name) { foreach ($files as $file_name) {
$file_stmts[] = new Expression(new Include_(new Concat(new Dir, new String_($file_name)), Include_::TYPE_REQUIRE_ONCE)); $file_stmts[] = new Expression(new Include_(new Concat(new Dir, new String_($file_name)), Include_::TYPE_REQUIRE_ONCE));
} }
$prettyPrinter = new Standard(); $prettyPrinter = new MinifyPrinterTools();
$newCode = $prettyPrinter->prettyPrintFile($file_stmts); $newCode = $prettyPrinter->prettyPrintFile($file_stmts);

View File

@@ -0,0 +1,47 @@
<?php
namespace app\common\tools\phpparser;
class MinifyPrinterTools extends PrettyPrinterTools
{
/**
* Reset pretty printing state.
*/
protected function resetState()
{
$this->indentLevel = 0;
$this->nl = "";
$this->origTokens = null;
}
/**
* Set indentation level
*
* @param int $level Level in number of spaces
*/
protected function setIndentLevel(int $level)
{
$this->indentLevel = $level;
$this->nl = "" . \str_repeat('', $level);
}
/**
* Increase indentation level.
*/
protected function indent()
{
$this->indentLevel += 4;
$this->nl .= '';
}
/**
* Decrease indentation level.
*/
protected function outdent()
{
assert($this->indentLevel >= 4);
$this->indentLevel -= 4;
$this->nl = "" . str_repeat('', $this->indentLevel);
}
}

View File

@@ -4,8 +4,9 @@ return [
// 全局函数库,否则无论是否以/开头,都以项目根目录开头定位,如果有其他的文件,在这里声明 // 全局函数库,否则无论是否以/开头,都以项目根目录开头定位,如果有其他的文件,在这里声明
// 不支持项目以外的位置定义 // 不支持项目以外的位置定义
// 只能包含函数,不支持命名空间 // 只能包含函数,不支持命名空间
// 这些代码不能包含__DIR__、__FILE__等代码位置常量不会影响打包但代码逻辑会被破坏 // 这些代码将忽略include、require表达式所以如果用include 方式引入其他函数库,要在这里声明,
// 将忽略注释和注解,代码业务请不要依赖注解 // !如果使用include方式读取文件内容或配置将失败
// !将忽略注释和注解,代码业务请不要依赖注解
'function_path' => [ 'function_path' => [
'app/common.php' 'app/common.php'
], ],
@@ -14,6 +15,7 @@ return [
'/^\.git/', '/^\.git/',
'/^dist/', '/^dist/',
'/^runtime/', '/^runtime/',
'/app\/common.php/',
], ],
// 支持正则表达式,将文件原封不动的挪到输出目录 // 支持正则表达式,将文件原封不动的挪到输出目录
'ignore_path' => [ 'ignore_path' => [
@@ -26,7 +28,6 @@ return [
'/provider\.php/', '/provider\.php/',
'/service\.php/', '/service\.php/',
'/^app\/.*\/config\/.*/', '/^app\/.*\/config\/.*/',
'/app\/common.php/',
'/config.php/', '/config.php/',
'/^public\/index\.php/', '/^public\/index\.php/',
'/^public\/router\.php/', '/^public\/router\.php/',