ClawSkills logoClawSkills

Netlify

使用 Netlify CLI (netlify) 创建/关联 Netlify 站点,并从 GitHub 设置 CI/CD(持续部署),特别适用于 Monorepos(包含多个站点的单一代码库

介绍

# netlify

使用 `netlify` CLI 创建项目(“站点”)、关联本地文件夹,并从 GitHub 配置 CI/CD。

## 前置要求

- `netlify --version` - 已登录(`netlify login`)**或者**提供 `--auth $NETLIFY_AUTH_TOKEN`。 - 了解你想要在其下创建站点的 Netlify 团队/账户 标识(可选,但建议)。

有用的检查命令:

```bash netlify status netlify sites:list ```

## Monorepo 模式(推荐)

对于 **包含多个站点的单个仓库**(例如 `sites/seattlecustomboatparts.com`、`sites/floridacustomerboatparts.com`):

- **每个域名创建一个 Netlify 站点**。 - 将站点的 **Base directory**(基础目录)设置为该子文件夹。 - 将 `netlify.toml` 放在 *该子文件夹内*。

这可以保持每个域名的构建配置独立。

### Hugo 子文件夹 `netlify.toml`

创建 `sites/<domain>/netlify.toml`:

```toml [build] command = "hugo --minify" publish = "public"

[build.environment] HUGO_VERSION = "0.155.1" ```

(根据需要调整 HUGO_VERSION。)

## 快速工作流:创建 + 关联 + 初始化 CI/CD

### 1) 创建一个 Netlify 站点(项目)

在你想要部署的站点文件夹(基础目录)中运行:

```bash cd sites/<domain> netlify sites:create --name <netlify-site-name> --account-slug <team> --with-ci ```

注意: - `--with-ci` 启动 CI 挂钩设置。 - 如果你需要手动控制,请添加 `--manual`。

### 2) 将本地文件夹关联到创建的站点

如果尚未关联:

```bash netlify link ```

### 3) 连接到 GitHub 进行持续部署

```bash netlify init ```

这通常是交互式的(选择 Git 远程/仓库 + 构建设置)。为了自动化,我们可以预先创建 `netlify.toml` 并接受默认值。

## 环境变量

设置每个站点的变量:

```bash netlify env:set VAR_NAME value netlify env:list ```

对于 monorepos 很有用: - `CONTACT_EMAIL`(或其他共享配置)

## 部署

手动部署(适合快速预览):

```bash netlify deploy # draft deploy netlify deploy --prod # production deploy ```

## 包含的脚本

- `scripts/hugo_netlify_toml.sh`:在 Hugo 子文件夹中创建 `netlify.toml` - `scripts/netlify_monorepo_site.sh`:帮助为子文件夹创建/关联/初始化站点

使用脚本时,对于非交互式运行,建议通过环境变量传递 `NETLIFY_AUTH_TOKEN`。

更多产品