From 7c05bf766bf3ff3383aadda7f0e92afdf63bc38b Mon Sep 17 00:00:00 2001 From: Andrew Borisenko Date: Thu, 25 May 2017 16:47:34 +0300 Subject: [PATCH 01/11] UPDATE settings --- meta.js | 16 ++++++---- template/.babelrc | 4 +-- template/.eslintrc.js | 46 ++++++++++------------------- template/.postcssrc.js | 10 ++++++- template/build/webpack.base.conf.js | 40 +++++++++++++++---------- template/config/index.js | 4 +-- template/package.json | 36 +++++++++++----------- 7 files changed, 82 insertions(+), 74 deletions(-) diff --git a/meta.js b/meta.js index e2e2fdffa1..57a819db7a 100644 --- a/meta.js +++ b/meta.js @@ -40,10 +40,19 @@ module.exports = { } ] }, + "port": { + "type": "string", + "message": "What port for localhost (http://localhost:8080) do you want to use? ", + "default": 8080 + }, "router": { "type": "confirm", "message": "Install vue-router?" }, + "vuex": { + "type": "confirm", + "message": "Install vuex?" + }, "lint": { "type": "confirm", "message": "Use ESLint to lint your code?" @@ -54,15 +63,10 @@ module.exports = { "message": "Pick an ESLint preset", "choices": [ { - "name": "Standard (https://github.com/feross/standard)", + "name": "EAHT Standard", "value": "standard", "short": "Standard" }, - { - "name": "Airbnb (https://github.com/airbnb/javascript)", - "value": "airbnb", - "short": "Airbnb" - }, { "name": "none (configure it yourself)", "value": "none", diff --git a/template/.babelrc b/template/.babelrc index 13f0e47164..871bee763a 100644 --- a/template/.babelrc +++ b/template/.babelrc @@ -1,13 +1,13 @@ { "presets": [ ["env", { "modules": false }], - "stage-2" + "stage-3" ], "plugins": ["transform-runtime"], "comments": false, "env": { "test": { - "presets": ["env", "stage-2"], + "presets": ["env", "stage-3"], "plugins": [ "istanbul" ] } } diff --git a/template/.eslintrc.js b/template/.eslintrc.js index 00b5b5717a..01ec478daf 100644 --- a/template/.eslintrc.js +++ b/template/.eslintrc.js @@ -4,51 +4,37 @@ module.exports = { root: true, parser: 'babel-eslint', parserOptions: { + ecmaVersion: 2016, sourceType: 'module' }, env: { + es6: true, browser: true, }, {{#if_eq lintConfig "standard"}} - // https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style - extends: 'standard', - {{/if_eq}} - {{#if_eq lintConfig "airbnb"}} - extends: 'airbnb-base', + extends: 'prettier', {{/if_eq}} // required to lint *.vue files plugins: [ - 'html' + 'html', + 'vue' + {{#if_eq lintConfig "standard"}}, + 'prettier' + {{/if_eq}} ], - {{#if_eq lintConfig "airbnb"}} - // check if imports actually resolve - 'settings': { - 'import/resolver': { - 'webpack': { - 'config': 'build/webpack.base.conf.js' - } - } - }, - {{/if_eq}} // add your custom rules here 'rules': { {{#if_eq lintConfig "standard"}} - // allow paren-less arrow functions - 'arrow-parens': 0, - // allow async-await - 'generator-star-spacing': 0, - {{/if_eq}} - {{#if_eq lintConfig "airbnb"}} - // don't require .vue extension when importing - 'import/extensions': ['error', 'always', { - 'js': 'never', - 'vue': 'never' - }], - // allow optionalDependencies - 'import/no-extraneous-dependencies': ['error', { - 'optionalDependencies': ['test/unit/index.js'] + "prettier/prettier": ["error", { + "tabWidth": 2, + "semi": true, + "singleQuote": true, + "trailingComma": "none", + "bracketSpacing": true, + "jsxBracketSameLine": true }], {{/if_eq}} + 'vue/jsx-uses-vars': 2, // allow debugger during development 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0 } diff --git a/template/.postcssrc.js b/template/.postcssrc.js index ea9a5ab875..5e88c064b0 100644 --- a/template/.postcssrc.js +++ b/template/.postcssrc.js @@ -3,6 +3,14 @@ module.exports = { "plugins": { // to edit target browsers: use "browserlist" field in package.json - "autoprefixer": {} + "postcss-import": { + path: ['src/assets/css/'] + }, + "postcss-cssnext": { + features: { + colorRgba: false, + rem: false + } + } } } diff --git a/template/build/webpack.base.conf.js b/template/build/webpack.base.conf.js index 0f161198d4..6c0dae9fb8 100644 --- a/template/build/webpack.base.conf.js +++ b/template/build/webpack.base.conf.js @@ -32,12 +32,14 @@ module.exports = { {{#lint}} { test: /\.(js|vue)$/, - loader: 'eslint-loader', enforce: 'pre', include: [resolve('src'), resolve('test')], - options: { - formatter: require('eslint-friendly-formatter') - } + use: [{ + loader: 'eslint-loader', + options: { + formatter: require('eslint-friendly-formatter') + } + }] }, {{/lint}} { @@ -47,24 +49,30 @@ module.exports = { }, { test: /\.js$/, - loader: 'babel-loader', - include: [resolve('src'), resolve('test')] + include: [resolve('src'), resolve('test')], + use: [{ + loader: 'babel-loader' + }] }, { test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, - loader: 'url-loader', - options: { - limit: 10000, - name: utils.assetsPath('img/[name].[hash:7].[ext]') - } + use: [{ + loader: 'url-loader', + options: { + limit: 10000, + name: utils.assetsPath('img/[name].[hash:7].[ext]') + } + }] }, { test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, - loader: 'url-loader', - options: { - limit: 10000, - name: utils.assetsPath('fonts/[name].[hash:7].[ext]') - } + use: [{ + loader: 'url-loader', + options: { + limit: 10000, + name: utils.assetsPath('fonts/[name].[hash:7].[ext]') + } + }] } ] } diff --git a/template/config/index.js b/template/config/index.js index 196da1fa7d..d974cfb1f1 100644 --- a/template/config/index.js +++ b/template/config/index.js @@ -23,7 +23,7 @@ module.exports = { }, dev: { env: require('./dev.env'), - port: 8080, + port: {{ port }}, autoOpenBrowser: true, assetsSubDirectory: 'static', assetsPublicPath: '/', @@ -33,6 +33,6 @@ module.exports = { // (https://github.com/webpack/css-loader#sourcemaps) // In our experience, they generally work as expected, // just be aware of this issue when enabling this option. - cssSourceMap: false + cssSourceMap: true } } diff --git a/template/package.json b/template/package.json index ae104e7928..8b01750405 100644 --- a/template/package.json +++ b/template/package.json @@ -11,14 +11,18 @@ "unit": "cross-env BABEL_ENV=test karma start test/unit/karma.conf.js --single-run"{{/unit}}{{#e2e}}, "e2e": "node test/e2e/runner.js"{{/e2e}}{{#if_or unit e2e}}, "test": "{{#unit}}npm run unit{{/unit}}{{#unit}}{{#e2e}} && {{/e2e}}{{/unit}}{{#e2e}}npm run e2e{{/e2e}}"{{/if_or}}{{#lint}}, - "lint": "eslint --ext .js,.vue src{{#unit}} test/unit/specs{{/unit}}{{#e2e}} test/e2e/specs{{/e2e}}"{{/lint}} + "lint": "eslint --ext .js,.vue src{{#unit}} test/unit/specs{{/unit}}{{#e2e}} test/e2e/specs{{/e2e}}", + "fixJs": "eslint --fix .js,.vue src{{#unit}} test/unit/specs{{/unit}}{{#e2e}} test/e2e/specs{{/e2e}}"{{/lint}} }, "dependencies": { - "vue": "^2.2.6"{{#router}}, - "vue-router": "^2.3.1"{{/router}} + "vue": "^2.3.3"{{#router}}, + "vue-router": "^2.3.1"{{/router}}{{vuex}}, + "vuex": "^2.3.1", + "vuex-persistedstate": "^1.1.0", + "vuex-router-sync": "^4.1.2"{{/vuex}} }, "devDependencies": { - "autoprefixer": "^6.7.2", + "autoprefixer": "^7.0.0", "babel-core": "^6.22.1", {{#lint}} "babel-eslint": "^7.1.1", @@ -26,26 +30,24 @@ "babel-loader": "^6.2.10", "babel-plugin-transform-runtime": "^6.22.0", "babel-preset-env": "^1.3.2", - "babel-preset-stage-2": "^6.22.0", + "babel-preset-stage-3": "^6.22.0", "babel-register": "^6.22.0", "chalk": "^1.1.3", "connect-history-api-fallback": "^1.3.0", "copy-webpack-plugin": "^4.0.1", "css-loader": "^0.28.0", + "postcss-cssnext": "^2.11.0", + "postcss-import": "^10.0.0", {{#lint}} "eslint": "^3.19.0", "eslint-friendly-formatter": "^2.0.7", "eslint-loader": "^1.7.1", "eslint-plugin-html": "^2.0.0", + "eslint-plugin-vue": "^2.0.1", {{#if_eq lintConfig "standard"}} - "eslint-config-standard": "^6.2.1", - "eslint-plugin-promise": "^3.4.0", - "eslint-plugin-standard": "^2.0.1", - {{/if_eq}} - {{#if_eq lintConfig "airbnb"}} - "eslint-config-airbnb-base": "^11.1.3", - "eslint-import-resolver-webpack": "^0.8.1", - "eslint-plugin-import": "^2.2.0", + "eslint-config-prettier": "^2.1.1", + "eslint-plugin-prettier": "^2.1.1", + "prettier": "^1.3.1", {{/if_eq}} {{/lint}} "eventsource-polyfill": "^0.9.6", @@ -57,7 +59,10 @@ "http-proxy-middleware": "^0.17.3", "webpack-bundle-analyzer": "^2.2.1", {{#unit}} + "babel-plugin-istanbul": "^4.1.1", + "chai": "^3.5.0", "cross-env": "^4.0.0", + "inject-loader": "^3.0.0", "karma": "^1.4.1", "karma-coverage": "^1.1.1", "karma-mocha": "^1.3.0", @@ -69,12 +74,9 @@ "karma-webpack": "^2.0.2", "lolex": "^1.5.2", "mocha": "^3.2.0", - "chai": "^3.5.0", + "phantomjs-prebuilt": "^2.1.14", "sinon": "^2.1.0", "sinon-chai": "^2.8.0", - "inject-loader": "^3.0.0", - "babel-plugin-istanbul": "^4.1.1", - "phantomjs-prebuilt": "^2.1.14", {{/unit}} {{#e2e}} "chromedriver": "^2.27.2", From 82957d39f75f677e2f65ef16a8a05fdf0939c326 Mon Sep 17 00:00:00 2001 From: Andrew Borisenko Date: Thu, 25 May 2017 17:14:14 +0300 Subject: [PATCH 02/11] UPDATE start bundle --- template/src/App.vue | 10 ++--- template/src/components/Hello.vue | 24 ++++++++--- template/src/main.js | 18 +++++---- template/src/router/index.js | 16 ++++---- template/src/store/index.js | 40 +++++++++++++++++++ .../e2e/custom-assertions/elementCount.js | 16 ++++---- template/test/e2e/runner.js | 28 ++++++------- template/test/e2e/specs/test.js | 8 ++-- template/test/unit/index.js | 12 +++--- template/test/unit/karma.conf.js | 12 +++--- template/test/unit/specs/Hello.spec.js | 14 +++---- 11 files changed, 128 insertions(+), 70 deletions(-) create mode 100644 template/src/store/index.js diff --git a/template/src/App.vue b/template/src/App.vue index 74a25d1dfa..9c20a41d17 100644 --- a/template/src/App.vue +++ b/template/src/App.vue @@ -11,15 +11,15 @@