Introduction
# netlify
Use the `netlify` CLI to create projects (“sites”), link local folders, and configure CI/CD from GitHub.
## Pre-reqs
- `netlify --version` - Logged in (`netlify login`) **or** provide `--auth $NETLIFY_AUTH_TOKEN`. - Know the Netlify team/account slug you want to create sites under (optional but recommended).
Helpful checks:
```bash netlify status netlify sites:list ```
## Monorepo pattern (recommended)
For **one repo with multiple sites** (e.g. `sites/seattlecustomboatparts.com`, `sites/floridacustomerboatparts.com`):
- Create **one Netlify site per domain**. - Set the site’s **Base directory** to that subfolder. - Put a `netlify.toml` *inside that subfolder*.
This keeps each domain’s build config self-contained.
### Hugo subfolder `netlify.toml`
Create `sites/<domain>/netlify.toml`:
```toml [build] command = "hugo --minify" publish = "public"
[build.environment] HUGO_VERSION = "0.155.1" ```
(Adjust HUGO_VERSION as needed.)
## Fast workflow: create + link + init CI/CD
### 1) Create a Netlify site (project) Run inside the site folder you want to deploy (base dir):
```bash cd sites/<domain> netlify sites:create --name <netlify-site-name> --account-slug <team> --with-ci ```
Notes: - `--with-ci` starts CI hooks setup. - If you need manual control, add `--manual`.
### 2) Link local folder to the created site If not linked already:
```bash netlify link ```
### 3) Connect to GitHub for continuous deployment
```bash netlify init ```
This is usually interactive (select Git remote/repo + build settings). For automation we can pre-create `netlify.toml` and then accept defaults.
## Environment variables
Set per-site vars:
```bash netlify env:set VAR_NAME value netlify env:list ```
Useful for monorepos: - `CONTACT_EMAIL` (or other shared config)
## Deploy
Manual deploys (handy for quick preview):
```bash netlify deploy # draft deploy netlify deploy --prod # production deploy ```
## Included scripts
- `scripts/hugo_netlify_toml.sh`: create a `netlify.toml` in a Hugo subfolder - `scripts/netlify_monorepo_site.sh`: helper to create/link/init a site for a subfolder
When using scripts, prefer passing `NETLIFY_AUTH_TOKEN` via env for non-interactive runs.