Skip to content

Commit 26f60c0

Browse files
committed
perf: divide bundle size by ~3
1 parent baa2445 commit 26f60c0

12 files changed

+2260
-1922
lines changed

.browserslistrc

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
> 1%
22
last 2 versions
3-
not ie <= 8
3+
not dead
4+
not IE 11

.eslintrc.js

+6-4
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,19 @@ module.exports = {
55
jest: true
66
},
77
extends: [
8-
'plugin:vue/essential',
8+
'plugin:vue/recommended',
99
'plugin:jest/recommended',
10-
'@vue/standard'
10+
'standard'
1111
],
1212
plugins: [
1313
'vue',
1414
'jest'
1515
],
1616
rules: {
17-
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
18-
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off'
17+
// 0 = off, 1 = warn, 2 = error
18+
'no-console': process.env.NODE_ENV === 'production' ? 2 : 0,
19+
'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
20+
'array-callback-return': 0
1921
},
2022
parserOptions: {
2123
parser: 'babel-eslint'

babel.config.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
module.exports = {
22
presets: [
3-
'@vue/app'
3+
['@vue/app', {
4+
useBuiltIns: false
5+
}]
46
]
57
}

package.json

+24-19
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@
66
"license": "MIT",
77
"scripts": {
88
"serve": "vue-cli-service serve --open",
9-
"prepare": "yarn build",
9+
"prepublishOnly": "yarn build",
1010
"build": "vue-cli-service build --formats commonjs,umd-min --target lib --name vue-form-json ./src/components/Form/Form.vue",
11-
"lint": "vue-cli-service lint",
11+
"build:report": "yarn build --report",
12+
"lint": "NODE_ENV=production vue-cli-service lint --no-fix",
13+
"lint:fix": "NODE_ENV=production vue-cli-service lint",
1214
"test": "NODE_ENV=test vue-cli-service test:unit --coverage",
1315
"test:tdd": "yarn test --watchAll",
1416
"semantic-release": "semantic-release"
@@ -32,9 +34,10 @@
3234
}
3335
},
3436
"lint-staged": {
35-
"*.{js,vue}": "vue-cli-service lint"
37+
"*.{js,vue}": "yarn lint"
3638
},
3739
"main": "./dist/vue-form-json.common.js",
40+
"unpkg": "./dist/vue-form-json.umd.min.js",
3841
"files": [
3942
"dist"
4043
],
@@ -64,9 +67,8 @@
6467
"dependencies": {
6568
"humps": "^2.0.1",
6669
"ramda": "^0.27.0",
67-
"slugify": "^1.4.4",
68-
"vee-validate": "^3.4.5",
69-
"vue": "^2.6.12"
70+
"slugify": "^1.4.7",
71+
"vee-validate": "^3.4.5"
7072
},
7173
"devDependencies": {
7274
"@babel/core": "^7.10.5",
@@ -76,33 +78,36 @@
7678
"@semantic-release/git": "^9.0.0",
7779
"@semantic-release/github": "^7.0.7",
7880
"@semantic-release/npm": "^7.0.5",
79-
"@vue/cli-plugin-babel": "~4.4.6",
80-
"@vue/cli-plugin-eslint": "~4.4.6",
81-
"@vue/cli-plugin-unit-jest": "^4.4.6",
82-
"@vue/cli-service": "~4.4.6",
83-
"@vue/eslint-config-standard": "^5.1.2",
81+
"@vue/babel-preset-app": "^4.5.11",
82+
"@vue/cli-plugin-babel": "^4.5.11",
83+
"@vue/cli-plugin-eslint": "^4.5.11",
84+
"@vue/cli-plugin-unit-jest": "^4.5.11",
85+
"@vue/cli-service": "^4.5.11",
8486
"@vue/test-utils": "1.0.3",
8587
"babel-eslint": "^10.1.0",
8688
"babel-jest": "^26.1.0",
87-
"eslint": "^7.5.0",
89+
"eslint": "^7.21.0",
90+
"eslint-config-standard": "^16.0.2",
8891
"eslint-junit": "^1.0.1",
89-
"eslint-plugin-import": "^2.22.0",
90-
"eslint-plugin-jest": "^23.18.0",
92+
"eslint-plugin-import": "^2.22.1",
93+
"eslint-plugin-jest": "^24.1.7",
9194
"eslint-plugin-node": "^11.1.0",
92-
"eslint-plugin-promise": "^4.2.1",
93-
"eslint-plugin-standard": "^4.0.1",
94-
"eslint-plugin-vue": "^6.2.2",
95+
"eslint-plugin-promise": "^4.3.1",
96+
"eslint-plugin-vue": "^7.7.0",
9597
"husky": "^4.2.5",
9698
"jest-junit": "^11.0.1",
9799
"jest-vue-matcher": "^2.0.0",
98100
"lint-staged": "^10.2.11",
99-
"pug": "^3.0.0",
100-
"pug-plain-loader": "^1.0.0",
101+
"pug": "^3.0.2",
102+
"pug-plain-loader": "^1.1.0",
101103
"semantic-release": "^17.1.1",
102104
"stylus": "^0.54.8",
103105
"stylus-loader": "^3.0.2",
104106
"vue-template-compiler": "^2.6.11"
105107
},
108+
"peerDependencies": {
109+
"vue": "^2.6.12"
110+
},
106111
"jest-junit": {
107112
"output": "coverage/junit/js-test-results.xml"
108113
},

src/components/Fields/Select.spec.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import matchers from 'jest-vue-matcher'
22
import { mount, createLocalVue } from '@vue/test-utils'
33
import { ValidationProvider, ValidationObserver } from 'vee-validate'
4-
import { extendRules, slug } from '@/helpers'
4+
import { extendRules, slug } from '@/helpers/test'
55
import Form from '@/components/Form'
66

77
extendRules()

src/components/Form/Form.spec.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import matchers from 'jest-vue-matcher'
22
import { mount, createLocalVue, createWrapper } from '@vue/test-utils'
33
import { flatten, pickAll, map } from 'ramda'
4-
import { camelizeKeys, extendRules, flush, slug } from '@/helpers'
4+
import { camelizeKeys, slug } from '@/helpers'
5+
import { extendRules, flush } from '@/helpers/test'
56
import { ValidationProvider, ValidationObserver } from 'vee-validate'
67
import Form from '@/components/Form'
78
import fields from './fields'

src/components/Form/Form.vue

+2-2
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
</template>
4747

4848
<script>
49-
import { ValidationObserver } from 'vee-validate'
49+
import { ValidationObserver } from 'vee-validate/dist/vee-validate.min.js'
5050
5151
import {
5252
flatten,
@@ -135,7 +135,7 @@ export default {
135135
)(this.formFields)
136136
},
137137
mounted () {
138-
this.allControls = this.$refs.control
138+
this.allControls = this.$refs.control || []
139139
},
140140
methods: {
141141
async onSubmit (ev) {

src/components/Form/FormError.spec.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import matchers from 'jest-vue-matcher'
22
import { mount, createLocalVue } from '@vue/test-utils'
3-
import { extendRules, flush, slug } from '@/helpers'
3+
import { slug } from '@/helpers'
4+
import { extendRules, flush } from '@/helpers/test'
45
import Form from '@/components/Form'
56
import { ValidationProvider, ValidationObserver } from 'vee-validate'
67

src/components/Form/FormRules.spec.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import matchers from 'jest-vue-matcher'
22
import { mount, createLocalVue } from '@vue/test-utils'
33
import { ValidationProvider, ValidationObserver } from 'vee-validate'
44
import Form from '@/components/Form'
5-
import { extendRules, flush } from '@/helpers'
5+
import { extendRules, flush } from '@/helpers/test'
66

77
extendRules()
88

src/helpers/index.js

-17
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,8 @@
11
import slugify from 'slugify'
22
import { camelize } from 'humps'
3-
import { extend } from 'vee-validate'
4-
import { messages } from 'vee-validate/dist/locale/en.json'
5-
import * as rules from 'vee-validate/dist/rules.umd.js'
63

74
export const slug = str => slugify(str.toLowerCase()) || str
85

9-
export const flush = async () => {
10-
// Flush pending Vue promises
11-
await new Promise(resolve => setTimeout(resolve, 0))
12-
// Wait a browser tick to make sure changes are applied
13-
return new Promise(resolve => setTimeout(resolve, 20))
14-
}
15-
16-
export const extendRules = () => Object.keys(rules).forEach(rule => {
17-
extend(rule, {
18-
...rules[rule],
19-
message: messages[rule]
20-
})
21-
})
22-
236
export const camelizeKeys = (object) =>
247
Object.entries(object).reduce(
258
(acc, [key, value]) => ({ ...acc, [camelize(key)]: value }),

src/helpers/test.js

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { extend } from 'vee-validate'
2+
import { messages } from 'vee-validate/dist/locale/en.json'
3+
import * as rules from 'vee-validate/dist/rules.umd.min.js'
4+
5+
export const flush = async () => {
6+
// Flush pending Vue promises
7+
await new Promise(resolve => setTimeout(resolve, 0))
8+
// Wait a browser tick to make sure changes are applied
9+
return new Promise(resolve => setTimeout(resolve, 20))
10+
}
11+
12+
export const extendRules = () => Object.keys(rules).forEach(rule => {
13+
extend(rule, {
14+
...rules[rule],
15+
message: messages[rule]
16+
})
17+
})

0 commit comments

Comments
 (0)