automattic / ignorefile
处理.gitignore风格文件。
v2.1.0
2024-08-29 19:01 UTC
Requires
- php: >=7.0
Requires (Dev)
- automattic/jetpack-changelogger: ^4.2.6
- yoast/phpunit-polyfills: ^1.1.1
This package is auto-updated.
Last update: 2024-09-18 03:17:35 UTC
README
这个小型库允许在PHP中处理.gitignore
风格的文件。
遵循gitignore文档,即使在git本身不遵循的情况下也是如此。
安装
需要使用composer require automattic/ignorefile
。
使用方法
// Read a .myignore file. $ignore = new IgnoreFile(); $ignore->add( file_get_contents( '.myignore' ) ); // Test if a file is ignored. if ( $ignore->ignores( $filename ) ) { echo "$filename is ignored\n"; } else { echo "$filename is not ignored\n"; } // Filter ignored files from an array of files. $filesToProcess = $ignore->filter( $allFiles ); // Load all .myignore files in a directory tree, then list all non-ignored files. $ignore = new IgnoreFile(); $iter = new RecursiveIteratorIterator( new RecursiveDirectoryIterator( '.' ) ); foreach ( $iter as $path ) { if ( basename( $path ) === '.myignore' ) { $ignore->add( file_get_contents( $path ), dirname( $path ) . '/' ); } } $iter = new RecursiveIteratorIterator( $ignore->filterIterator( new RecursiveDirectoryIterator( '.' ) ) ); foreach ( $iter as $file ) { echo "$file\n"; }
严格模式
为了匹配git的行为,传递给add()
的无效模式将被静默忽略。如果您更希望抛出异常,请将$ignore->strictMode
设置为true。
与git的已知不兼容性
截至git 2.43.0。
gitignore文档提到fnmatch关于*
、?
和括号表达式的具体细节。这又反过来引用了几份其他文档。
灵感
我需要一个与npm模块ignore
类似的东西用于PHP,但找不到一个。所以我自己写了一个,复制了相当全面的测试集,以确保我的实现是准确的。