packages/baseweb-vscode-extension/snippets/build.ts (63 lines of code) (raw):

import { vscodeSnippet } from 'react-view'; import fs from 'fs'; import path from 'path'; let snippets = { 'React import': { scope: 'javascript,javascriptreact,typescript,typescriptreact', prefix: ['React import'], description: 'React import statement.', body: ["import * as React from 'react';"], }, 'React component': { scope: 'javascript,javascriptreact', prefix: ['React component'], description: 'React import.', body: ['const ${1} = (${2}) => {', ' return ${0};', '};', '', 'export default ${1};'], }, 'React typescript component': { scope: 'typescript,typescriptreact', prefix: ['React component'], description: 'React import.', body: [ 'const ${1}: React.FC<{${2}}> = (${3}) => {', ' return ${0};', '};', '', 'export default ${1};', ], }, }; const filenameToPrefix = (str: string) => { return str .replace(/(^([a-zA-Z\p{M}]))|([ -][a-zA-Z\p{M}])/g, function (firstLetter) { return firstLetter.toUpperCase(); }) .replace(/\-/g, '') .split('.')[0]; }; const files = fs.readdirSync( path.join(__dirname, '../../../documentation-site/components/yard/config') ); files .filter((file) => file.includes('.ts')) .forEach((file) => { const prefix = filenameToPrefix(file); const filePath = path.join( __dirname, '../../../documentation-site/components/yard/config', file ); const config = require(filePath); delete config.default.props.overrides; const snippet = vscodeSnippet({ prefix, componentName: config.default.componentName, imports: config.default.imports, props: config.default.props, }); snippets = { ...snippets, ...snippet }; }); fs.writeFileSync( path.join(__dirname, 'baseweb.code-snippets'), JSON.stringify(snippets, undefined, ' ') );