import * as _ from 'lodash'; import * as path from 'path'; import * as prettier from 'prettier'; import { componentEntry, docsPath, srcPath, vai } from '../../node'; import { prettierConfig } from '../../utils/prettier-config'; import { ensureTest } from './ensure-project'; export function ensureComponentFiles(instance: typeof vai) { ensurePackageJson(instance); ensureEntryFile(instance); ensureDocs(instance); ensureTest(instance); } export function ensurePackageJson(instance: typeof vai) { instance.project.addProjectFiles({ fileName: 'package.json', pipeContent: prev => { const prevJson = JSON.parse(prev); return ( JSON.stringify( _.merge({}, prevJson, { main: `${instance.projectConfig.distDir}/${srcPath.dir}/index.js`, types: path.format(componentEntry), dependencies: { '@babel/runtime': '^7.0.0' }, scripts: { // FIXME: Don't know which cli to use. // publish: 'npm run build && npm publish' } }), null, 2 ) + '\n' ); } }); } const ensureEntryFile = (instance: typeof vai) => instance.project.addProjectFiles({ fileName: path.format(componentEntry), pipeContent: text => text ? text : prettier.format( ` import * as React from 'react' export default () =>