Skip to content

Commit 4ed00b8

Browse files
committed
Merge branch 'triptease-dl/add-styles'
2 parents 0167a4c + 7b934b2 commit 4ed00b8

File tree

11 files changed

+120
-327
lines changed

11 files changed

+120
-327
lines changed

package-lock.json

Lines changed: 60 additions & 311 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,4 +42,4 @@
4242
"jest": "^20.0.4",
4343
"npm-watch": "^0.1.7"
4444
}
45-
}
45+
}

src/files.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,11 @@ function generateFiles(params) {
123123
}
124124

125125
// Create js file
126-
fs.outputFile(`${destination}/${name}.${jsExtension}`, generateComponentTemplate(type, name))
126+
fs.outputFile(
127+
`${destination}/${name}.${jsExtension}`,
128+
generateComponentTemplate(type, name, { cssExtension })
129+
)
130+
127131
// Create css file
128132
if (cssExtension) {
129133
fs.outputFile(`${destination}/${name}.${cssExtension}`, generateStyleFile(name))

src/templates/__tests__/index.test.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,17 +31,17 @@ describe('Template index', () => {
3131

3232
it('should call class.template when class is passed into generateComponentTemplate', () => {
3333
generateComponentTemplate('class', 'test')
34-
expect(mockClassTemplate).toHaveBeenCalledWith('test')
34+
expect(mockClassTemplate).toHaveBeenCalledWith('test', {})
3535
})
3636

3737
it('should call pure.template when pure is passed into generateComponentTemplate', () => {
3838
generateComponentTemplate('pure', 'test')
39-
expect(mockPureTemplate).toHaveBeenCalledWith('test')
39+
expect(mockPureTemplate).toHaveBeenCalledWith('test', {})
4040
})
4141

4242
it('should call functional.template when stateless is passed into generateComponentTemplate', () => {
4343
generateComponentTemplate('stateless', 'test')
44-
expect(mockFunctionalTemplate).toHaveBeenCalledWith('test')
44+
expect(mockFunctionalTemplate).toHaveBeenCalledWith('test', {})
4545
})
4646

4747
it('should export generateIndexFile with correct module', () => {

src/templates/index.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,13 @@ const types = {
1212
pure: generatePureComponent,
1313
}
1414

15-
function generateComponentTemplate(type, name) {
16-
return types[type](name)
15+
function generateComponentTemplate(type, name, options = {}) {
16+
return types[type](name, options)
1717
}
1818

1919
export {
2020
generateComponentTemplate,
21+
generateClassComponent,
2122
generateStyleFile,
2223
generateIndexFile,
2324
generateTestTemplate,
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import template from '../common.template'
2+
3+
describe('Common Template', () => {
4+
it('should a string', () => {
5+
expect(typeof template()).toBe('string')
6+
})
7+
8+
it('should create imports with react and proptypes', () => {
9+
expect(template('Foo')).toContain(
10+
`import React from 'react'
11+
import PropTypes from 'prop-types'`
12+
)
13+
})
14+
15+
it('should add styles import when cssExtension is passed', () => {
16+
const cssExtension = 'css'
17+
expect(template('Foo', { cssExtension })).toContain(
18+
`import styles from './Foo.${cssExtension}`
19+
)
20+
})
21+
})

src/templates/js/class.template.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
function generateClassComponent(COMPONENT_NAME) {
2-
return `import React, { Component } from 'react'
3-
import PropTypes from 'prop-types'
1+
import generateImports from './common.template'
2+
import defaultOptions from './config.json'
3+
4+
function generateClassComponent(COMPONENT_NAME, { cssExtension } = defaultOptions) {
5+
return `${generateImports(COMPONENT_NAME, { cssExtension })}
46
57
class ${COMPONENT_NAME} extends Component {
68
constructor(props) {

src/templates/js/common.template.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import defaultOptions from './config.json'
2+
3+
function generateImports(COMPONENT_NAME, { cssExtension } = defaultOptions) {
4+
return `import React from 'react'
5+
import PropTypes from 'prop-types'
6+
${cssExtension ? `import styles from './${COMPONENT_NAME}.${cssExtension}'` : ''}`
7+
}
8+
9+
export default generateImports

src/templates/js/config.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"cssExtension": null
3+
}

src/templates/js/functional.template.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
function generateFunctionalComponent(COMPONENT_NAME) {
2-
return `import React from 'react'
3-
import PropTypes from 'prop-types'
1+
import generateImports from './common.template'
2+
import defaultOptions from './config.json'
3+
4+
function generateFunctionalComponent(COMPONENT_NAME, { cssExtension } = defaultOptions) {
5+
return `${generateImports(COMPONENT_NAME, { cssExtension })}
46
57
const ${COMPONENT_NAME} = ({}) => (
68
<div className="${COMPONENT_NAME}"></div>

src/templates/js/pure.template.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
function generatePureComponent(COMPONENT_NAME) {
2-
return `import React, { PureComponent } from 'react'
3-
import PropTypes from 'prop-types'
1+
import generateImports from './common.template'
2+
import defaultOptions from './config.json'
3+
4+
function generatePureComponent(COMPONENT_NAME, { cssExtension } = defaultOptions) {
5+
return `${generateImports(COMPONENT_NAME, { cssExtension })}
46
57
class ${COMPONENT_NAME} extends PureComponent {
68
constructor(props) {

0 commit comments

Comments
 (0)