Skip to main content
Glama
build-dxt-clean.cjs3.78 kB
#!/usr/bin/env node const fs = require('fs-extra'); const path = require('path'); const { execSync } = require('child_process'); async function buildCleanDXT() { console.log('🧹 Building clean DXT package...'); const tempDir = path.join(__dirname, '..', 'temp-dxt-clean'); const rootDir = path.join(__dirname, '..'); try { // Clean up any existing temp directory await fs.remove(tempDir); await fs.ensureDir(tempDir); // Copy only the essential files console.log('📦 Copying essential files...'); // Copy and update manifest with current package version const packageJson = await fs.readJson(path.join(rootDir, 'package.json')); const manifest = await fs.readJson(path.join(rootDir, 'dxt', 'manifest.json')); // Sync version with package.json manifest.version = packageJson.version; // Write updated manifest to temp directory await fs.writeJson(path.join(tempDir, 'manifest.json'), manifest, { spaces: 2 }); console.log(`📝 Updated manifest version to ${packageJson.version}`); // Copy icon to root await fs.copy(path.join(rootDir, 'dxt', 'icon.png'), path.join(tempDir, 'icon.png')); // Copy dist directory await fs.copy(path.join(rootDir, 'dist'), path.join(tempDir, 'dist')); // Copy AJV schema files for DXT compatibility const ajvRefsDir = path.join(tempDir, 'dist', 'ajv-refs'); await fs.ensureDir(ajvRefsDir); await fs.copy(path.join(rootDir, 'node_modules', 'ajv', 'lib', 'refs', 'json-schema-draft-07.json'), path.join(ajvRefsDir, 'json-schema-draft-07.json')); await fs.copy(path.join(rootDir, 'node_modules', 'ajv', 'lib', 'refs', 'json-schema-draft-04.json'), path.join(ajvRefsDir, 'json-schema-draft-04.json')); await fs.copy(path.join(rootDir, 'node_modules', 'ajv', 'lib', 'refs', 'json-schema-draft-06.json'), path.join(ajvRefsDir, 'json-schema-draft-06.json')); await fs.copy(path.join(rootDir, 'node_modules', 'ajv', 'lib', 'refs', 'json-schema-secure.json'), path.join(ajvRefsDir, 'json-schema-secure.json')); await fs.copy(path.join(rootDir, 'node_modules', 'ajv', 'lib', 'refs', 'data.json'), path.join(ajvRefsDir, 'data.json')); // Copy essential config files await fs.copy(path.join(rootDir, 'package.json'), path.join(tempDir, 'package.json')); await fs.copy(path.join(rootDir, 'package-lock.json'), path.join(tempDir, 'package-lock.json')); await fs.copy(path.join(rootDir, 'LICENSE'), path.join(tempDir, 'LICENSE')); await fs.copy(path.join(rootDir, 'mcp-wordpress.config.json.example'), path.join(tempDir, 'mcp-wordpress.config.json.example')); // Copy essential non-dev files await fs.copy(path.join(rootDir, 'eslint.config.js'), path.join(tempDir, 'eslint.config.js')); await fs.copy(path.join(rootDir, 'vitest.config.ts'), path.join(tempDir, 'vitest.config.ts')); // Copy dxt directory (for icon and manifest references) await fs.copy(path.join(rootDir, 'dxt'), path.join(tempDir, 'dxt')); // Install production dependencies only console.log('📦 Installing production dependencies...'); process.chdir(tempDir); execSync('npm ci --production', { stdio: 'inherit' }); // Create the DXT package console.log('🎁 Creating DXT package...'); execSync(`dxt pack . ${path.join(rootDir, 'mcp-wordpress.dxt')}`, { stdio: 'inherit' }); // Clean up process.chdir(rootDir); await fs.remove(tempDir); console.log('✅ Official DXT package created: mcp-wordpress.dxt'); } catch (error) { console.error('❌ Error building clean DXT:', error); process.chdir(rootDir); await fs.remove(tempDir); process.exit(1); } } buildCleanDXT();

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/docdyhr/mcp-wordpress'

If you have feedback or need assistance with the MCP directory API, please join our Discord server