pushword/flat-file
最新稳定版本:1.0.0-rc327
Composer 安装命令:
composer require pushword/flat-file
包简介
Transform Pushword in a FlatFile CMS.
README 文档
README
Transform Pushword in a FlatFile CMS.
Documentation
Visit pushword.piedweb.com
Contributing
If you're interested in contributing to Pushword, please read our contributing docs before submitting a pull request.
Credits
License
The MIT License (MIT). Please see License File for more information.
Schéma du flux pw:flat:sync
flowchart TD
Start([Commande: pw:flat:sync]) --> Check{PageSync & MediaSync}
Check -->|Fichiers plus récents que DB| Import[IMPORT: Fichiers → Base de données]
Check -->|DB plus récente ou pas de fichiers| Export[EXPORT: Base de données → Fichiers]
%% BRANCHE IMPORT
Import --> ImportMedia1[1. Import médias depuis mediaDir]
ImportMedia1 --> ImportMedia1Finish[finishImport médias]
ImportMedia1Finish --> ImportMedia2[2. Import médias depuis contentDir/media]
ImportMedia2 --> ImportMedia2Finish[finishImport médias]
ImportMedia2Finish --> ImportPages[3. Import pages depuis contentDir]
ImportPages --> ImportPagesFinish[finishImport pages]
ImportPagesFinish --> ImportProcess[Pour chaque fichier .md]
ImportProcess --> ImportCheck{Page existe en DB?}
ImportCheck -->|Non| ImportCreate[Créer nouvelle Page]
ImportCheck -->|Oui| ImportCompare{Fichier plus récent?}
ImportCompare -->|Oui| ImportUpdate[Mettre à jour Page]
ImportCompare -->|Non| ImportSkip[Ignorer]
ImportCreate --> ImportFlush[Flush DB]
ImportUpdate --> ImportFlush
ImportSkip --> ImportFlush
ImportFlush --> ImportLinks[Convertir liens markdown relatifs en slugs]
ImportLinks --> ImportRelations[Traiter relations parentPage, mainImage, etc.]
ImportRelations --> ImportEnd[Import terminé]
%% BRANCHE EXPORT
Export --> ExportPages[1. Exporter toutes les pages]
ExportPages --> ExportPageLoop[Pour chaque Page en DB]
ExportPageLoop --> ExportPageCheck{Fichier existe et plus récent?}
ExportPageCheck -->|Oui et pas --force| ExportPageSkip[Ignorer]
ExportPageCheck -->|Non ou --force| ExportPageWrite[Écrire .md avec front matter YAML]
ExportPageSkip --> ExportMedias
ExportPageWrite --> ExportMedias[2. Exporter tous les médias]
ExportMedias --> ExportMediaLoop[Pour chaque Media en DB]
ExportMediaLoop --> ExportMediaYaml[Écrire .yaml avec métadonnées]
ExportMediaYaml --> ExportMediaCopy{CopyMedia configuré?}
ExportMediaCopy -->|Oui| ExportMediaCopyFile[Copier fichier média]
ExportMediaCopy -->|Non| ExportEnd
ExportMediaCopyFile --> ExportEnd[Export terminé]
ImportEnd --> End([Fin])
ExportEnd --> End
style Start fill:#e1f5ff
style Import fill:#fff4e1
style Export fill:#e1ffe1
style ImportEnd fill:#d4edda
style ExportEnd fill:#d4edda
style End fill:#e1f5ff
Loading
Détails du processus
Décision Import/Export
PageSync et MediaSync déterminent la direction pour chaque ressource :
PageSyncscanne récursivement le répertoire de contenu- Pour chaque fichier
.md, comparefilemtime()avecPage->getUpdatedAt() - Si un fichier est plus récent que sa page en DB → IMPORT pour les pages, sinon EXPORT
MediaSyncparcourt les répertoiresmediaDir&content/<host>/media- Pour chaque média ou fichier de métadonnées, compare
filemtime()avecMedia->getUpdatedAt() - Si un fichier est plus récent que le média en DB → IMPORT pour les médias, sinon EXPORT
Import (Fichiers → DB)
-
Import médias globaux (
mediaDir)- Parcourt récursivement le répertoire
- Pour chaque fichier : vérifie si plus récent que
Media->getUpdatedAt() - Met à jour ou crée l'entité
Media - Lit les métadonnées depuis
.yamlou.json(deprecated) si présents
-
Import médias locaux (
contentDir/media)- Même processus pour les médias spécifiques au contenu
-
Import pages (
contentDir)- Parse chaque fichier
.mdavec front matter YAML - Extrait le slug (depuis front matter ou nom de fichier)
- Met à jour ou crée l'entité
Page - Convertit les liens markdown relatifs en slugs absolus
- Traite les relations (parentPage, mainImage, translations, etc.)
- Parse chaque fichier
Export (DB → Fichiers)
-
Export pages
- Pour chaque
Pageen DB :- Vérifie si le fichier
.mdexiste et est plus récent (sauf avec--force) - Génère le front matter YAML avec toutes les propriétés
- Écrit le fichier
{slug}.md
- Vérifie si le fichier
- Pour chaque
-
Export médias
- Pour chaque
Mediaen DB :- Écrit un fichier
.yamlavec les métadonnées - Si
copyMediaest configuré, copie également le fichier média
- Écrit un fichier
- Pour chaque
统计信息
- 总下载量: 189
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 2
- 点击次数: 1
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2020-12-29