UNPKG

zz-shopify-components

Version:

Reusable Shopify components for theme projects

52 lines (40 loc) 1.48 kB
#!/usr/bin/env node console.log('Running postinstall-v3...'); const fs = require('fs-extra'); const path = require('path'); const rootDir = path.resolve(__dirname, '..'); const targetDirs = ['sections', 'snippets', 'blocks', 'assets']; const projectRoot = process.cwd(); // 安装者项目根目录 const configPath = path.join(rootDir, 'component.config.json'); let whitelist = new Set(); if (fs.existsSync(configPath)) { try { const config = fs.readJsonSync(configPath); if (Array.isArray(config.whitelist)) { whitelist = new Set(config.whitelist.map((p) => path.normalize(p))); } } catch (err) { console.warn('⚠️ 无法解析 component.config.json:', err.message); } } const shouldCopy = (fileRelativePath) => { const fileName = path.basename(fileRelativePath); const normalizedPath = path.normalize(fileRelativePath); return fileName.startsWith('zz-') || whitelist.has(normalizedPath); }; targetDirs.forEach((dir) => { const sourceDir = path.join(rootDir, dir); const targetDir = path.join(projectRoot, dir); if (!fs.existsSync(sourceDir)) return; const files = fs.readdirSync(sourceDir); files.forEach((file) => { const relativePath = path.join(dir, file); if (shouldCopy(relativePath)) { const from = path.join(sourceDir, file); const to = path.join(targetDir, file); fs.ensureDirSync(targetDir); fs.copySync(from, to); console.log(`✅ 拷贝: ${relativePath}`); } }); });