Skip to content

Commit

Permalink
bump 9.5.2; Fix build script
Browse files Browse the repository at this point in the history
  • Loading branch information
zombieJ committed May 14, 2019
1 parent 36accd0 commit 085e078
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 74 deletions.
138 changes: 65 additions & 73 deletions lib/genStorybook.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ const glob = require('glob');
* to
* export default ()=><Demo />
*/
const replaceFileContent = filePath => {
const replaceFileContent = (filePath) => {
const regex = /[\s\S]*^(\S*\.render\(([\s\S]*), document\.getElementById\('__react-content'\)\);)/m;
const content = fs.readFileSync(filePath, 'utf-8');
// 有了 export default 说明已经是新版本的了直接放过
Expand All @@ -29,87 +29,79 @@ const replaceFileContent = filePath => {
return true;
};

const genStorybook = dir => {
const genStorybook = (dir) => {
const config = require(path.join(dir, './package.json'));

const firstUpperCase = ([first, ...rest]) => first.toUpperCase() + rest.join('');
const firstUpperCase = ([ first, ...rest ]) => first.toUpperCase() + rest.join('');

// get all files
glob(path.join(dir, './examples/*.js'), {}, (err, files) => {
const importString = [];
const importSourceString = [];
const addString = [];
const jsList = files
.filter(filePath => replaceFileContent(filePath))
.map(fileName => {
return fileName
.split('/')
.pop()
.replace('.js', '');
});
const files = glob.sync(path.join(dir, './examples/*.js'), {});

// single-animation => SingleAnimation
jsList.forEach(fileName => {
const ComponentName = fileName
.split('-')
.map(item => firstUpperCase(item))
.join('');
const importString = [];
const importSourceString = [];
const addString = [];
const jsList = files.filter((filePath) => replaceFileContent(filePath)).map((fileName) => {
return fileName.split('/').pop().replace('.js', '');
});

importString.push(`import ${ComponentName} from '../examples/${fileName}';`);
importSourceString.push(
`import ${ComponentName}Source from 'rc-source-loader!../examples/${fileName}';`
);
// single-animation => SingleAnimation
jsList.forEach((fileName) => {
const ComponentName = fileName.split('-').map((item) => firstUpperCase(item)).join('');

addString.push(`.add('${fileName}', () => <${ComponentName} />,{
source: {
code: ${ComponentName}Source,
},
})`);
});
importString.push(`import ${ComponentName} from '../examples/${fileName}';`);
importSourceString.push(
`import ${ComponentName}Source from 'rc-source-loader!../examples/${fileName}';`,
);

const fileContent = `
/* eslint-disable import/no-webpack-loader-syntax */
import React from 'react';
import Markdown from 'react-markdown';
import { checkA11y } from '@storybook/addon-a11y';
import { storiesOf } from '@storybook/react';
import { withConsole } from '@storybook/addon-console';
import { withViewport } from '@storybook/addon-viewport';
import { withInfo } from '@storybook/addon-info';
${importSourceString.join('\n')}
${importString.join('\n')}
import READMECode from '../README.md';
storiesOf('${config.name}', module)
.addDecorator(checkA11y)
.addDecorator(withInfo)
.addDecorator((storyFn, context) => withConsole()(storyFn)(context))
.addDecorator(withViewport())
.add(
'readMe',
() => (
<div
className="markdown-body entry-content"
style={{
padding: 24,
}}
>
<Markdown escapeHtml={false} source={READMECode} />
</div>
),
{
source: {
code: READMECode,
},
},
)
${addString.join('\n')}
`;
if (!fs.existsSync(path.join(dir, './storybook/'))) {
fs.mkdir(path.join(dir, './storybook/'));
}
fs.writeFileSync(path.join(dir, './storybook/index.js'), fileContent);
addString.push(`.add('${fileName}', () => <${ComponentName} />,{
source: {
code: ${ComponentName}Source,
},
})`);
});

const fileContent = `
/* eslint-disable import/no-webpack-loader-syntax */
import React from 'react';
import Markdown from 'react-markdown';
import { checkA11y } from '@storybook/addon-a11y';
import { storiesOf } from '@storybook/react';
import { withConsole } from '@storybook/addon-console';
import { withViewport } from '@storybook/addon-viewport';
import { withInfo } from '@storybook/addon-info';
${importSourceString.join('\n')}
${importString.join('\n')}
import READMECode from '../README.md';
storiesOf('${config.name}', module)
.addDecorator(checkA11y)
.addDecorator(withInfo)
.addDecorator((storyFn, context) => withConsole()(storyFn)(context))
.addDecorator(withViewport())
.add(
'readMe',
() => (
<div
className="markdown-body entry-content"
style={{
padding: 24,
}}
>
<Markdown escapeHtml={false} source={READMECode} />
</div>
),
{
source: {
code: READMECode,
},
},
)
${addString.join('\n')}
`;
if (!fs.existsSync(path.join(dir, './storybook/'))) {
fs.mkdir(path.join(dir, './storybook/'));
}
fs.writeFileSync(path.join(dir, './storybook/index.js'), fileContent);
};

module.exports = genStorybook;
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "rc-tools",
"version": "9.5.1",
"version": "9.5.2",
"description": "offline tools for react component",
"keywords": [
"react",
Expand Down

0 comments on commit 085e078

Please sign in to comment.