arnoson / kirby-deploy
Requires
README
Kirby Deploy
我们都经历过:手动将文件拖放到FileZilla等FTP客户端中上传网站到服务器。这不仅繁琐,而且如果你忘记上传一些更改过的文件,还可能出错。
有一些更好的工具可以自动化这个过程,比如rsync或lftp,但它们并不容易使用。Kirby Deploy封装了lftp,提供了良好的默认设置,并在边缘处提供帮助。
警告
此工具处于早期阶段。请自行承担风险,并在应用之前备份您的远程/本地数据。
演示
功能
- 📡 使用ftp(不需要SSH访问)
- 🌟 只上传更改过的文件
- 🗂️ 推送或拉取内容以同步本地开发
- 🚧 在部署期间在您的网站上显示维护注释
- 🧹 部署后清除缓存
安装
先决条件:安装 lftp。如果您使用的是Windows,请在WSL中安装lftp(您的代码不需要位于WSL中)。
安装Kirby插件
composer require arnoson/kirby-deploy
安装CLI
npm install kirby-deploy
用法
设置您的 配置 并部署您的网站。所有命令将启动一个测试运行,向您展示哪些文件将被修改或删除。
npx kirby-deploy
内容文件夹和账户文件夹 不会 上传,以防止您在以后的某个阶段破坏您的生产网站。因此,对于第一次部署,您还必须运行
npx kirby-deploy content-push
和
npx kirby-deploy accounts-push
查看 /example
以获取有关 .env
文件和npm脚本的更详细设置。
配置
基本
// kirby-deploy.config.js import { defineConfig } from 'kirby-deploy' export default defineConfig { // Ftp credentials host: 'ftp://example.com', user: 'user', password: '********', // If your website is located in a subfolder on your ftp accounts root folder, // like `./web/example.com` remoteDir: './', // The URL to your website url: 'https://example.com', // A secret token, can be anything you like. token: 'my_secret_token', // Wether or not to check if the `composer.lock` file has changed to speed // up deployment. checkComposerLock: true, // Wether ot not call webhooks to set your website in maintenance mode during // deployment and clear the pages cache afterwards. callWebhooks: true, }
注意:不要在配置中将您的FTP凭据硬编码,而应使用 .env
文件。请参阅 /example
文件夹。
高级
// kirby-deploy.config.js import { defineConfig } from 'kirby-deploy' export default defineConfig { // The default folder structure is 'flat' which is Kirby's // default structure. If you use a public folder structure use 'public'... folderStructure: 'public', // ...or define a custom structure folderStructure: { content: 'content', media: 'public/media', accounts: 'storage/accounts', sessions: 'storage/sessions', cache: 'storage/cache', }, // Excluding additional files an folders from syncing. Uses lftp's exclude // and exclude-glob. exclude: ['^my-excluded-folder/'], excludeGlob: ['*.ts'], // Include files and folders that are matched by the exclude and exclude-glob. include: ['^my-included-folder/'], includeGlob: ['*-include.ts'], // Show additional information, useful for debugging. verbose: true, // Additional lftp settings. lftpSettings: { 'ftp:ssl-force': true }, // Additional lftp flags. lftpFlags: ['--no-perms'], }
命令
🚀 部署
将您的网站上传到服务器。
注意:这将覆盖远程文件并删除在本地不存在的远程文件。
npx kirby-deploy
🗂️ 内容
推送
将您的本地内容文件夹上传到您的网站。
注意:这将 覆盖 远程文件并 删除 在本地不存在的任何远程文件。
npx kirby-deploy content-push
拉取
从您的网站下载内容文件夹。
注意:这将 覆盖 本地文件并 删除 在您的网站空间中不存在的任何本地文件。
🔑 账户
推送
将您的本地账户文件夹(包括 .htpasswd
)上传到您的网站。
注意:这将 覆盖 远程文件并 删除 在本地不存在的任何远程文件。
npx kirby-deploy content-push
拉取
从您的网站下载账户文件夹(包括 .htpasswd
)。
注意:这将 覆盖 本地文件并 删除 在您的网站空间中不存在的任何本地文件。
故障排除
如果您无法连接到FTP服务器,请尝试使用lftp直接连接,以查看这是否是lftp的一般问题或此工具的问题。
尝试列出例如您的目录。
lftp
SET ftp:ssl-force true
open ftp://example.com
user user_name password
ls
路线图
- 允许在配置中设置lftp标志
- 更好的错误处理
- 测试
sftp
,目前我只使用它进行ftps
致谢
感谢