cube-parameters
Version:
A sophisticated 3D model viewer built with React, TypeScript, and Three.js, featuring advanced visualization tools, measurement capabilities, and lighting controls.
67 lines (55 loc) โข 1.79 kB
JavaScript
const fs = require('fs');
const path = require('path');
const { execSync } = require('child_process');
console.log('๐๏ธ Building 3D Model Viewer package...');
try {
// Clean previous builds
console.log('๐งน Cleaning previous builds...');
if (fs.existsSync('dist')) {
fs.rmSync('dist', { recursive: true, force: true });
}
// Build the library
console.log('๐ฆ Building library...');
execSync('npx vite build --config vite.config.lib.ts', { stdio: 'inherit' });
// Generate TypeScript declarations
console.log('๐ Generating TypeScript declarations...');
execSync('npx tsc --project tsconfig.lib.json', { stdio: 'inherit' });
// Copy package.json for library
console.log('๐ Copying package configuration...');
fs.copyFileSync('package-lib.json', 'dist/package.json');
// Copy README
console.log('๐ Copying documentation...');
fs.copyFileSync('README-package.md', 'dist/README.md');
// Create npmignore
console.log('๐ Creating .npmignore...');
const npmignoreContent = `*.log
.DS_Store
node_modules/
src/
tsconfig*.json
vite.config*.ts
*.sh
*.js
`;
fs.writeFileSync('dist/.npmignore', npmignoreContent);
console.log('โ
Package build complete!');
console.log('๐ Output directory: ./dist');
console.log('๐ Ready for publishing!');
// Show package size
try {
const stats = fs.statSync('dist');
console.log('๐ Package built successfully');
} catch (err) {
// Size calculation not critical
}
console.log('');
console.log('To test locally:');
console.log(' cd dist && npm pack');
console.log('');
console.log('To publish:');
console.log(' cd dist && npm publish');
} catch (error) {
console.error('โ Build failed:', error.message);
process.exit(1);
}