
Company News
Jerod Santo Joins Socket as Head of Media
Allow myself to introduce... myself.
@packkit/provider-netlify
Advanced tools
Netlify deployment provider for Packkit-generated projects — consumes a project's deployment contract to plan and apply a Netlify site.
Netlify deployment provider for Packkit-generated projects.
Packkit generates a project and describes how to deploy it in a provider-neutral deployment contract. This package turns that contract into a Netlify site — it plans the deploy deterministically and applies it through a client you inject.
It depends only on Packkit's public embedded API and deployment contract. It never imports Packkit internals, and Packkit never depends on it.
create-packkit ──► GeneratedProject.deploymentContract ──► @packkit/provider-netlify
Node.js >= 20 — matching create-packkit's own floor, so any host that can run the generator can install this provider. (The repo's .nvmrc pins a current release for local development.)
npm install @packkit/provider-netlify
create-packkit is a peer dependency (^3.3.0) — the host app already has it.
import { createProject } from 'create-packkit/embedded';
import { createNetlifyProvider } from '@packkit/provider-netlify';
const project = createProject({ preset: 'react-app', name: 'my-app' });
const provider = createNetlifyProvider({ client: myNetlifyClient });
// 1. Check support (pure) — reads only the deployment contract.
const support = provider.supports(project.deploymentContract);
if (!support.supported) throw new Error(support.reasons[0].message);
// 2. Prepare provider files (pure) — netlify.toml, for the host to commit.
const { files } = provider.prepare({ project });
// 3. Plan the deploy (pure, deterministic) — no network.
const plan = provider.plan({
project,
repository: { provider: 'github', owner: 'DanMat', name: 'my-app', branch: 'main' },
});
// 4. Apply (the only method that touches the network) — via your client.
const result = await provider.apply(plan);
supports / prepare / plan are pure. No filesystem, no network, no
client — same inputs produce the same output, so they're trivially testable
and safe to run anywhere. plan() returns netlify.toml as data; the host
writes it (ideally through create-packkit/writer).apply is the only method that performs I/O. It executes the plan's
operations through the client you inject. The provider never constructs a
client and never reads credentials from the environment — auth and the
decision to deploy stay entirely on the host side.You supply an object the provider calls:
interface NetlifyClient {
createSite(input: {
name: string;
repository: { provider: string; owner: string; name: string; branch: string };
build: { command: string; publishDirectory: string };
}): Promise<{ id?: string; name?: string; url?: string }>;
}
0.1.0 — static sites only: support detection, contract validation,
deterministic netlify.toml, a create-site plan, and apply against a client
(exercised with a mock). No DNS, functions, custom domains, monorepo, or
fullstack support; unsupported project types are reported, not guessed.
Planned:
MIT © DanMat
FAQs
Netlify deployment provider for Packkit-generated projects — consumes a project's deployment contract to plan and apply a Netlify site.
The npm package @packkit/provider-netlify receives a total of 15 weekly downloads. As such, @packkit/provider-netlify popularity was classified as not popular.
We found that @packkit/provider-netlify demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Company News
Allow myself to introduce... myself.

Research
/Security News
A Twitch browser extension on Chrome and Firefox forwards users’ live OAuth session tokens through proxies controlled by a Russian bot service.

Security News
Anthropic found biased reasoning and recklessness drove Claude Mythos 5 to publish malware on PyPI and compromise a security vendor.