nsgm-cli 1.0.21 → 1.0.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/LICENSE +201 -201
  2. package/README.md +162 -162
  3. package/generation/.babelrc +9 -9
  4. package/generation/README.md +18 -18
  5. package/generation/app.js +2 -2
  6. package/generation/client/redux/template/manage/actions.ts +190 -190
  7. package/generation/client/redux/template/manage/reducers.ts +118 -118
  8. package/generation/client/redux/template/manage/types.ts +24 -24
  9. package/generation/client/service/template/manage.ts +73 -73
  10. package/generation/client/styled/layout/index.ts +13 -13
  11. package/generation/client/styled/template/manage.ts +51 -51
  12. package/generation/gitignore +3 -3
  13. package/generation/mysql.config.js +12 -12
  14. package/generation/next-env.d.ts +2 -2
  15. package/generation/next.config.js +6 -6
  16. package/generation/pages/_app.tsx +44 -44
  17. package/generation/pages/index.tsx +54 -54
  18. package/generation/pages/template/manage.tsx +280 -280
  19. package/generation/project.config.js +12 -12
  20. package/generation/server/apis/template.js +18 -18
  21. package/generation/server/modules/template/resolver.js +231 -231
  22. package/generation/server/modules/template/schema.js +33 -33
  23. package/generation/server/rest.js +20 -20
  24. package/generation/server/sql/template.sql +8 -8
  25. package/generation/tsconfig.json +1 -1
  26. package/index.js +10 -10
  27. package/lib/args.d.ts +6 -6
  28. package/lib/args.js +47 -47
  29. package/lib/generate.d.ts +3 -3
  30. package/lib/generate.js +590 -590
  31. package/lib/index.d.ts +2 -2
  32. package/lib/index.js +182 -182
  33. package/lib/server/db.d.ts +5 -5
  34. package/lib/server/db.js +47 -47
  35. package/lib/server/graphql.d.ts +7 -7
  36. package/lib/server/graphql.js +119 -119
  37. package/lib/server/plugins/date.d.ts +5 -5
  38. package/lib/server/plugins/date.js +16 -16
  39. package/mysql.config.js +14 -14
  40. package/next.config.js +210 -209
  41. package/package.json +113 -113
  42. package/project.config.js +14 -14
package/next.config.js CHANGED
@@ -1,210 +1,211 @@
1
- /**
2
- * Created by lei_sun on 2019/7/9.
3
- */
4
- const { PHASE_DEVELOPMENT_SERVER } = require('next/constants')
5
- const fs = require('fs')
6
- const { promisify } = require('util')
7
- const { join } = require('path')
8
- const copyFile = promisify(fs.copyFile)
9
- const SimpleProgressPlugin = require('webpack-simple-progress-plugin')
10
- const TerserPlugin = require('terser-webpack-plugin')
11
-
12
- module.exports = (phase, defaultConfig, options) => {
13
- let projectConfig = null
14
- const curFolder = process.cwd()
15
- const curProjectConfigPath = curFolder + '/project.config.js'
16
-
17
- if (fs.existsSync(curProjectConfigPath)) {
18
- projectConfig = require(curProjectConfigPath)
19
- } else {
20
- projectConfig = require('./project.config.js')
21
- }
22
-
23
- // console.log('projectConfig', projectConfig)
24
- let { version, prefix, protocol, host, port } = projectConfig
25
-
26
- if(options != undefined){
27
- version = options.version
28
- prefix = options.prefix
29
- protocol = options.protocol
30
- host = options.host
31
- port = options.port
32
- // console.log('options', options)
33
- }
34
-
35
- // console.log('phase', phase, PHASE_DEVELOPMENT_SERVER, version, prefix, protocol, host, port)
36
-
37
- let configObj = {
38
- async rewrites() {
39
- return [
40
- {
41
- source: prefix + '/:slug*',
42
- destination: '/:slug*'
43
- }
44
- ]
45
- },
46
- //target: 'serverless',
47
- assetPrefix: '',
48
- crossOrign: 'anonymous',
49
- serverRuntimeConfig: {},
50
- publicRuntimeConfig: {
51
- version,
52
- prefix,
53
- protocol,
54
- host,
55
- port
56
- },
57
- generateBuildId: async () => {
58
- return 'crm-cli-' + version
59
- },
60
- exportPathMap: async function (defaultPathMap,
61
- { dev, dir, outDir }) {
62
- if (dev) {
63
- return defaultPathMap
64
- }
65
-
66
- return defaultPathMap
67
- },
68
- generateEtags: false,
69
- useFileSystemPublicRoutes: true,
70
- webpack: (config, { dev, isServer }) => {
71
- //console.log('dev', dev, isServer)
72
-
73
- if(!dev){
74
- if(!isServer){
75
- config.optimization.splitChunks = {
76
- cacheGroups: {
77
- default: false,
78
- vendors: false,
79
- framework: {
80
- //将react和react-dom打入framework当中
81
- name: 'framework',
82
- chunks: 'all',
83
- test: /[\\/]node_modules[\\/](react|react-dom)[\\/]/, //匹配库当中的react和react-dom
84
- priority: 40, //权重为40 最大权重
85
- },
86
- lib: {
87
- test(module) {
88
- //匹配包大于160000的
89
- if(module.size() > 100000){
90
- console.log('test_module', module.identifier(), module.size())
91
- }
92
- return module.size() > 100000
93
- },
94
- name(module) {
95
- //名字就是包当中的名字
96
- return (
97
- /[\\/]node_modules[\\/](.*)/.exec(module.identifier()) &&
98
- /[\\/]node_modules[\\/](.*)/.exec(module.identifier()).length &&
99
- /[\\/]node_modules[\\/](.*)/.exec(module.identifier())[1].replace(/\/|\\/g, '_')
100
- )
101
- },
102
- priority: 30, //权重为30
103
- minChunks: 1, //最小共用次数为1时就使用
104
- reuseExistingChunk: true
105
- },
106
- commons: {
107
- name: 'commons',
108
- chunks: 'all',
109
- minChunks: 20,
110
- maxSize: 30720,
111
- priority: 20
112
- },
113
- shared: {
114
- priority: 10,
115
- minChunks: 2,
116
- reuseExistingChunk: true
117
- },
118
- styles: {
119
- name: 'styles',
120
- test: /\.css$/,
121
- chunks: 'all',
122
- maxSize: 30720,
123
- enforce: true
124
- },
125
- less: {
126
- name: 'less',
127
- test: /\.less$/,
128
- chunks: 'all',
129
- maxSize: 30720,
130
- enforce: true
131
- }
132
- }
133
- }
134
- config.output.chunkFilename = `static/chunks/[name].${version}.js`
135
-
136
- config.output.filename = ({ chunk }) => {
137
- const { name } = chunk
138
- //console.log('name', name)
139
-
140
- if(name === 'main'){
141
- return `static/main.${version}.js`
142
- } else if(name === 'polyfills') {
143
- return `static/polyfills.${version}.js`
144
- } else if(name.indexOf('webpack') != -1){
145
- return `[name]`
146
- }
147
-
148
- return `static/[name].${version}.js`
149
- }
150
-
151
- config.optimization.runtimeChunk = {
152
- name: `static/runtime/webpack.${version}.js`,
153
- }
154
- }
155
-
156
- config.plugins.map(plugin => {
157
- //console.log('plugin.constructor.name', plugin.constructor.name)
158
- if ('NextMiniCssExtractPlugin' == plugin.constructor.name) {
159
- plugin.options = {
160
- filename: `static/css/[name].${version}.css`,
161
- chunkFilename: `static/css/[name].${version}.css`,
162
- moduleFilename: ({ name }) => {
163
- //console.log('name', name)
164
- return `static/css/${name}.${version}.css`
165
- }
166
- }
167
- }
168
- })
169
-
170
- config.plugins.push(new SimpleProgressPlugin())
171
-
172
- config.optimization.minimizer = [
173
- new TerserPlugin({
174
- parallel: true,
175
- terserOptions: {
176
- ecma: 6
177
- },
178
- minify: (file, sourceMap) => {
179
- // https://github.com/mishoo/UglifyJS2#minify-options
180
- const uglifyJsOptions = {
181
- /* your `uglify-js` package options */
182
- compress: {
183
- warnings: true,
184
- drop_console: true,
185
- drop_debugger: true
186
- }
187
- }
188
-
189
- if (sourceMap) {
190
- uglifyJsOptions.sourceMap = {
191
- content: sourceMap
192
- }
193
- }
194
-
195
- return require('uglify-es').minify(file, uglifyJsOptions)
196
- }
197
- })
198
- ]
199
- }
200
-
201
- return config
202
- }
203
- }
204
-
205
- if(phase != PHASE_DEVELOPMENT_SERVER){
206
- configObj.distDir = 'build'
207
- }
208
-
209
- return configObj
1
+ /**
2
+ * Created by lei_sun on 2019/7/9.
3
+ */
4
+ const { PHASE_DEVELOPMENT_SERVER } = require('next/constants')
5
+ const fs = require('fs')
6
+ const { promisify } = require('util')
7
+ const { join } = require('path')
8
+ const copyFile = promisify(fs.copyFile)
9
+ const SimpleProgressPlugin = require('webpack-simple-progress-plugin')
10
+ const TerserPlugin = require('terser-webpack-plugin')
11
+
12
+ module.exports = (phase, defaultConfig, options) => {
13
+ let projectConfig = null
14
+ const curFolder = process.cwd()
15
+ const curProjectConfigPath = curFolder + '/project.config.js'
16
+
17
+ if (fs.existsSync(curProjectConfigPath)) {
18
+ projectConfig = require(curProjectConfigPath)
19
+ } else {
20
+ projectConfig = require('./project.config.js')
21
+ }
22
+
23
+ // console.log('projectConfig', projectConfig)
24
+ let { version, prefix, protocol, host, port } = projectConfig
25
+
26
+ if(options != undefined){
27
+ version = options.version
28
+ prefix = options.prefix
29
+ protocol = options.protocol
30
+ host = options.host
31
+ port = options.port
32
+ // console.log('options', options)
33
+ }
34
+
35
+ // console.log('phase', phase, PHASE_DEVELOPMENT_SERVER, version, prefix, protocol, host, port)
36
+
37
+ let configObj = {
38
+ async rewrites() {
39
+ return [
40
+ {
41
+ source: prefix + '/:slug*',
42
+ destination: '/:slug*'
43
+ }
44
+ ]
45
+ },
46
+ //target: 'serverless',
47
+ assetPrefix: '',
48
+ crossOrign: 'anonymous',
49
+ serverRuntimeConfig: {},
50
+ publicRuntimeConfig: {
51
+ version,
52
+ prefix,
53
+ protocol,
54
+ host,
55
+ port,
56
+ phase
57
+ },
58
+ generateBuildId: async () => {
59
+ return 'nsgm-cli-' + version
60
+ },
61
+ exportPathMap: async function (defaultPathMap,
62
+ { dev, dir, outDir }) {
63
+ if (dev) {
64
+ return defaultPathMap
65
+ }
66
+
67
+ return defaultPathMap
68
+ },
69
+ generateEtags: false,
70
+ useFileSystemPublicRoutes: true,
71
+ webpack: (config, { dev, isServer }) => {
72
+ //console.log('dev', dev, isServer)
73
+
74
+ if(!dev){
75
+ if(!isServer){
76
+ config.optimization.splitChunks = {
77
+ cacheGroups: {
78
+ default: false,
79
+ vendors: false,
80
+ framework: {
81
+ //将react和react-dom打入framework当中
82
+ name: 'framework',
83
+ chunks: 'all',
84
+ test: /[\\/]node_modules[\\/](react|react-dom)[\\/]/, //匹配库当中的react和react-dom
85
+ priority: 40, //权重为40 最大权重
86
+ },
87
+ lib: {
88
+ test(module) {
89
+ //匹配包大于160000的
90
+ if(module.size() > 100000){
91
+ console.log('test_module', module.identifier(), module.size())
92
+ }
93
+ return module.size() > 100000
94
+ },
95
+ name(module) {
96
+ //名字就是包当中的名字
97
+ return (
98
+ /[\\/]node_modules[\\/](.*)/.exec(module.identifier()) &&
99
+ /[\\/]node_modules[\\/](.*)/.exec(module.identifier()).length &&
100
+ /[\\/]node_modules[\\/](.*)/.exec(module.identifier())[1].replace(/\/|\\/g, '_')
101
+ )
102
+ },
103
+ priority: 30, //权重为30
104
+ minChunks: 1, //最小共用次数为1时就使用
105
+ reuseExistingChunk: true
106
+ },
107
+ commons: {
108
+ name: 'commons',
109
+ chunks: 'all',
110
+ minChunks: 20,
111
+ maxSize: 30720,
112
+ priority: 20
113
+ },
114
+ shared: {
115
+ priority: 10,
116
+ minChunks: 2,
117
+ reuseExistingChunk: true
118
+ },
119
+ styles: {
120
+ name: 'styles',
121
+ test: /\.css$/,
122
+ chunks: 'all',
123
+ maxSize: 30720,
124
+ enforce: true
125
+ },
126
+ less: {
127
+ name: 'less',
128
+ test: /\.less$/,
129
+ chunks: 'all',
130
+ maxSize: 30720,
131
+ enforce: true
132
+ }
133
+ }
134
+ }
135
+ config.output.chunkFilename = `static/chunks/[name].${version}.js`
136
+
137
+ config.output.filename = ({ chunk }) => {
138
+ const { name } = chunk
139
+ //console.log('name', name)
140
+
141
+ if(name === 'main'){
142
+ return `static/main.${version}.js`
143
+ } else if(name === 'polyfills') {
144
+ return `static/polyfills.${version}.js`
145
+ } else if(name.indexOf('webpack') != -1){
146
+ return `[name]`
147
+ }
148
+
149
+ return `static/[name].${version}.js`
150
+ }
151
+
152
+ config.optimization.runtimeChunk = {
153
+ name: `static/runtime/webpack.${version}.js`,
154
+ }
155
+ }
156
+
157
+ config.plugins.map(plugin => {
158
+ //console.log('plugin.constructor.name', plugin.constructor.name)
159
+ if ('NextMiniCssExtractPlugin' == plugin.constructor.name) {
160
+ plugin.options = {
161
+ filename: `static/css/[name].${version}.css`,
162
+ chunkFilename: `static/css/[name].${version}.css`,
163
+ moduleFilename: ({ name }) => {
164
+ //console.log('name', name)
165
+ return `static/css/${name}.${version}.css`
166
+ }
167
+ }
168
+ }
169
+ })
170
+
171
+ config.plugins.push(new SimpleProgressPlugin())
172
+
173
+ config.optimization.minimizer = [
174
+ new TerserPlugin({
175
+ parallel: true,
176
+ terserOptions: {
177
+ ecma: 6
178
+ },
179
+ minify: (file, sourceMap) => {
180
+ // https://github.com/mishoo/UglifyJS2#minify-options
181
+ const uglifyJsOptions = {
182
+ /* your `uglify-js` package options */
183
+ compress: {
184
+ warnings: true,
185
+ drop_console: true,
186
+ drop_debugger: true
187
+ }
188
+ }
189
+
190
+ if (sourceMap) {
191
+ uglifyJsOptions.sourceMap = {
192
+ content: sourceMap
193
+ }
194
+ }
195
+
196
+ return require('uglify-es').minify(file, uglifyJsOptions)
197
+ }
198
+ })
199
+ ]
200
+ }
201
+
202
+ return config
203
+ }
204
+ }
205
+
206
+ if(phase != PHASE_DEVELOPMENT_SERVER){
207
+ configObj.distDir = 'build'
208
+ }
209
+
210
+ return configObj
210
211
  }
package/package.json CHANGED
@@ -1,113 +1,113 @@
1
- {
2
- "name": "nsgm-cli",
3
- "version": "1.0.21",
4
- "description": "A CLI tool to run Next/Style-components and Graphql/Mysql fullstack project",
5
- "main": "index.js",
6
- "scripts": {
7
- "dev": "node ./lib/index.js dev",
8
- "build": "next build",
9
- "tsv": "node ./lib/index.js version",
10
- "start": "node ./lib/index.js start",
11
- "export": "node ./lib/index.js export",
12
- "init": "node ./lib/index.js init",
13
- "upgrade": "node ./lib/index.js upgrade",
14
- "create": "node ./lib/index.js create",
15
- "delete": "node ./lib/index.js delete",
16
- "clean": "rimraf .next && rimraf build && rimraf webapp && rimraf lib",
17
- "tsbuild": "rimraf lib && tsc --build tsconfig.build.json",
18
- "lint": "tslint -p tsconfig.build.json",
19
- "format": "prettier --write \"src/**/*.ts\" ",
20
- "prepare": "npm run tsbuild",
21
- "prepublishOnly": "npm run lint",
22
- "preversion": "npm run lint",
23
- "version": "npm run format && git add -A src",
24
- "postversion": "git push && git push --tags",
25
- "release": "npm run lint && npm run tsbuild && npm run build"
26
- },
27
- "repository": {
28
- "type": "git",
29
- "url": "git+https://github.com/erishen/nsgm-cli.git"
30
- },
31
- "keywords": [
32
- "next",
33
- "style-components",
34
- "graphql",
35
- "mysql",
36
- "redux",
37
- "react",
38
- "hooks",
39
- "express"
40
- ],
41
- "author": {
42
- "name": "Erishen Sun",
43
- "email": "leisun8309@gmail.com"
44
- },
45
- "license": "ISC",
46
- "bugs": {
47
- "url": "https://github.com/erishen/nsgm-cli/issues"
48
- },
49
- "bin": {
50
- "nsgm": "lib/index.js"
51
- },
52
- "files": [
53
- "generation/*",
54
- "lib/*",
55
- "*.config.js"
56
- ],
57
- "homepage": "https://github.com/erishen/nsgm-cli#readme",
58
- "dependencies": {
59
- "antd": "^4.11.2",
60
- "axios": "^0.21.1",
61
- "body-parser": "^1.19.0",
62
- "express": "^4.17.1",
63
- "express-fileupload": "^1.2.1",
64
- "express-graphql": "^0.12.0",
65
- "graphql": "^15.5.0",
66
- "lodash": "^4.17.20",
67
- "markdown-it": "^12.0.4",
68
- "moment": "^2.29.1",
69
- "mysql": "^2.18.1",
70
- "next": "^11.0.1",
71
- "react": "^17.0.1",
72
- "react-dom": "^17.0.1",
73
- "react-redux": "^7.2.2",
74
- "redux": "^4.0.5",
75
- "redux-devtools-extension": "^2.13.8",
76
- "redux-thunk": "^2.3.0",
77
- "replace": "^1.2.0",
78
- "replace-in-file": "^6.2.0",
79
- "shelljs": "^0.8.4",
80
- "styled-components": "^5.2.1",
81
- "terser-webpack-plugin": "^4.2.3",
82
- "typescript": "^4.1.3",
83
- "uglify-es": "^3.3.9",
84
- "webpack": "^5.44.0",
85
- "webpack-simple-progress-plugin": "0.0.4",
86
- "xlsx": "^0.16.9"
87
- },
88
- "devDependencies": {
89
- "@babel/core": "^7.12.10",
90
- "@babel/plugin-proposal-optional-chaining": "^7.12.7",
91
- "@types/body-parser": "^1.19.0",
92
- "@types/express": "^4.17.11",
93
- "@types/express-fileupload": "^1.1.6",
94
- "@types/express-graphql": "^0.9.0",
95
- "@types/graphql": "^14.5.0",
96
- "@types/lodash": "^4.14.168",
97
- "@types/moment": "^2.13.0",
98
- "@types/mysql": "^2.15.17",
99
- "@types/next": "^9.0.0",
100
- "@types/node": "^14.14.22",
101
- "@types/react": "^17.0.0",
102
- "@types/react-dom": "^17.0.0",
103
- "@types/react-redux": "^7.1.16",
104
- "@types/shelljs": "^0.8.8",
105
- "@types/styled-components": "^5.1.7",
106
- "babel-plugin-react-html-attrs": "^3.0.5",
107
- "babel-plugin-styled-components": "^1.12.0",
108
- "prettier": "^2.2.1",
109
- "rimraf": "^3.0.2",
110
- "tslint": "^6.1.3",
111
- "tslint-config-prettier": "^1.18.0"
112
- }
113
- }
1
+ {
2
+ "name": "nsgm-cli",
3
+ "version": "1.0.25",
4
+ "description": "A CLI tool to run Next/Style-components and Graphql/Mysql fullstack project",
5
+ "main": "index.js",
6
+ "scripts": {
7
+ "dev": "node ./lib/index.js dev",
8
+ "build": "next build",
9
+ "tsv": "node ./lib/index.js version",
10
+ "start": "node ./lib/index.js start",
11
+ "export": "node ./lib/index.js export",
12
+ "init": "node ./lib/index.js init",
13
+ "upgrade": "node ./lib/index.js upgrade",
14
+ "create": "node ./lib/index.js create",
15
+ "delete": "node ./lib/index.js delete",
16
+ "clean": "rimraf .next && rimraf build && rimraf webapp && rimraf lib",
17
+ "tsbuild": "rimraf lib && tsc --build tsconfig.build.json",
18
+ "lint": "tslint -p tsconfig.build.json",
19
+ "format": "prettier --write \"src/**/*.ts\" ",
20
+ "prepare": "npm run tsbuild",
21
+ "prepublishOnly": "npm run lint",
22
+ "preversion": "npm run lint",
23
+ "version": "npm run format && git add -A src",
24
+ "postversion": "git push && git push --tags",
25
+ "release": "npm run lint && npm run tsbuild && npm run build"
26
+ },
27
+ "repository": {
28
+ "type": "git",
29
+ "url": "git+https://github.com/erishen/nsgm-cli.git"
30
+ },
31
+ "keywords": [
32
+ "next",
33
+ "style-components",
34
+ "graphql",
35
+ "mysql",
36
+ "redux",
37
+ "react",
38
+ "hooks",
39
+ "express"
40
+ ],
41
+ "author": {
42
+ "name": "Erishen Sun",
43
+ "email": "leisun8309@gmail.com"
44
+ },
45
+ "license": "ISC",
46
+ "bugs": {
47
+ "url": "https://github.com/erishen/nsgm-cli/issues"
48
+ },
49
+ "bin": {
50
+ "nsgmtest": "lib/index.js"
51
+ },
52
+ "files": [
53
+ "generation/*",
54
+ "lib/*",
55
+ "*.config.js"
56
+ ],
57
+ "homepage": "https://github.com/erishen/nsgm-cli#readme",
58
+ "dependencies": {
59
+ "antd": "^4.11.2",
60
+ "axios": "^0.21.1",
61
+ "body-parser": "^1.19.0",
62
+ "express": "^4.17.1",
63
+ "express-fileupload": "^1.2.1",
64
+ "express-graphql": "^0.12.0",
65
+ "graphql": "^15.5.0",
66
+ "lodash": "^4.17.20",
67
+ "markdown-it": "^12.0.4",
68
+ "moment": "^2.29.1",
69
+ "mysql": "^2.18.1",
70
+ "next": "^11.0.1",
71
+ "react": "^17.0.1",
72
+ "react-dom": "^17.0.1",
73
+ "react-redux": "^7.2.2",
74
+ "redux": "^4.0.5",
75
+ "redux-devtools-extension": "^2.13.8",
76
+ "redux-thunk": "^2.3.0",
77
+ "replace": "^1.2.0",
78
+ "replace-in-file": "^6.2.0",
79
+ "shelljs": "^0.8.4",
80
+ "styled-components": "^5.2.1",
81
+ "terser-webpack-plugin": "^4.2.3",
82
+ "typescript": "^4.1.3",
83
+ "uglify-es": "^3.3.9",
84
+ "webpack": "^5.44.0",
85
+ "webpack-simple-progress-plugin": "0.0.4",
86
+ "xlsx": "^0.16.9"
87
+ },
88
+ "devDependencies": {
89
+ "@babel/core": "^7.12.10",
90
+ "@babel/plugin-proposal-optional-chaining": "^7.12.7",
91
+ "@types/body-parser": "^1.19.0",
92
+ "@types/express": "^4.17.11",
93
+ "@types/express-fileupload": "^1.1.6",
94
+ "@types/express-graphql": "^0.9.0",
95
+ "@types/graphql": "^14.5.0",
96
+ "@types/lodash": "^4.14.168",
97
+ "@types/moment": "^2.13.0",
98
+ "@types/mysql": "^2.15.17",
99
+ "@types/next": "^9.0.0",
100
+ "@types/node": "^14.14.22",
101
+ "@types/react": "^17.0.0",
102
+ "@types/react-dom": "^17.0.0",
103
+ "@types/react-redux": "^7.1.16",
104
+ "@types/shelljs": "^0.8.8",
105
+ "@types/styled-components": "^5.1.7",
106
+ "babel-plugin-react-html-attrs": "^3.0.5",
107
+ "babel-plugin-styled-components": "^1.12.0",
108
+ "prettier": "^2.2.1",
109
+ "rimraf": "^3.0.2",
110
+ "tslint": "^6.1.3",
111
+ "tslint-config-prettier": "^1.18.0"
112
+ }
113
+ }