- API: `pnpm build` bundles dist/ into apps/api/.output (esbuild), with Linux musl native packages for sharp and argon2 kept alongside - docker/api.Dockerfile copies that output; no pnpm install on the server - add dist/migrate.js (prisma migrate deploy equivalent, same _prisma_migrations table and lock) so the Prisma CLI is not needed at runtime - pnpm-workspace: supportedArchitectures for linux/x64/musl - admin: apps/admin/.env.production sets VITE_SITE_URL for the production build - drop NPM_REGISTRY / SITE_URL build args from compose and .env.example - gitignore: anchor node_modules rules so pre-built node_modules are committed - README: describe the pre-built deploy flow Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
39 lines
860 B
JavaScript
39 lines
860 B
JavaScript
/*!
|
|
Copyright 2013 Lovell Fuller and others.
|
|
SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
const {
|
|
useGlobalLibvips,
|
|
globalLibvipsVersion,
|
|
log,
|
|
spawnRebuild,
|
|
} = require('../dist/libvips.cjs');
|
|
|
|
log('Building from source');
|
|
log('See https://sharp.pixelplumbing.com/install#building-from-source');
|
|
|
|
try {
|
|
const addonApi = require('node-addon-api');
|
|
log(`Found node-addon-api ${addonApi.version || ''}`);
|
|
} catch (_err) {
|
|
log('Please add node-addon-api to your dependencies');
|
|
process.exit(1);
|
|
}
|
|
try {
|
|
const gyp = require('node-gyp');
|
|
log(`Found node-gyp ${gyp().version}`);
|
|
} catch (_err) {
|
|
log('Please add node-gyp to your dependencies');
|
|
process.exit(1);
|
|
}
|
|
|
|
if (useGlobalLibvips(log)) {
|
|
log(`Found globally-installed libvips v${globalLibvipsVersion()}`);
|
|
}
|
|
|
|
const status = spawnRebuild();
|
|
if (status !== 0) {
|
|
process.exit(status);
|
|
}
|