arnoson/kirby-deploy

安装: 5

依赖: 0

建议者: 0

安全: 0

星标: 3

关注者: 1

分支: 0

开放问题: 0

语言:TypeScript

类型:kirby-plugin

0.0.5 2024-04-05 07:36 UTC

This package is auto-updated.

Last update: 2024-09-05 08:31:55 UTC


README

Kirby Deploy

Kirby Deploy

我们都经历过:手动将文件拖放到FileZilla等FTP客户端中上传网站到服务器。这不仅繁琐,而且如果你忘记上传一些更改过的文件,还可能出错。

有一些更好的工具可以自动化这个过程,比如rsync或lftp,但它们并不容易使用。Kirby Deploy封装了lftp,提供了良好的默认设置,并在边缘处提供帮助。

警告

此工具处于早期阶段。请自行承担风险,并在应用之前备份您的远程/本地数据。

演示

Example

功能

  • 📡 使用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

致谢

感谢