├── .babelrc ├── .eslintignore ├── .eslintrc ├── .gitignore ├── .stylelintrc.json ├── README.md ├── app ├── app.vue └── styles │ └── base.scss ├── index.html ├── index.js ├── package-lock.json └── package.json /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["env"] 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules/* 2 | dist/ 3 | .cache 4 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "extends": "airbnb-base", 4 | "parser": "babel-eslint", 5 | parserOptions: { 6 | sourceType: 'module' 7 | }, 8 | "plugins": ["html"], 9 | "settings": { 10 | "html/indent": "+2", 11 | "html/report-bad-indent": "error", 12 | "html/javascript-mime-types": ["text/javascript", "text/jsx"], 13 | "html/html-extensions": [".vue"] 14 | }, 15 | "env": { 16 | "browser": true, 17 | "node": true, 18 | "es6": true 19 | }, 20 | "globals": { 21 | "CKEDITOR": true 22 | }, 23 | "rules": { 24 | "no-restricted-syntax": 0, 25 | "o-absolute-path": 0, 26 | "no-new": 0, 27 | "no-console": 0, 28 | "no-bitwise": 0, 29 | "no-useless-escape": 0, 30 | "no-underscore-dangle": 0, 31 | 'global-require': 0, 32 | 'import/no-unresolved': 0, 33 | 'no-param-reassign': 0, 34 | 'no-shadow': 0, 35 | "valid-jsdoc": ["error", { 36 | "requireReturn": true, 37 | "requireReturnType": true, 38 | "requireParamDescription": true, 39 | "requireReturnDescription": true 40 | }], 41 | "require-jsdoc": ["error", { 42 | "require": { 43 | "FunctionDeclaration": true, 44 | "MethodDefinition": true, 45 | "ClassDeclaration": true 46 | } 47 | }] 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | logs.out 2 | node_modules 3 | .env 4 | dist 5 | .cache 6 | -------------------------------------------------------------------------------- /.stylelintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "stylelint-config-standard", 3 | "plugins": [ 4 | "stylelint-scss" 5 | ], 6 | "rules": { 7 | "color-no-hex": true, 8 | "max-nesting-depth": 3, 9 | "selector-max-specificity": "0,2,0", 10 | "selector-max-compound-selectors": 3, 11 | "font-family-name-quotes": "always-where-required", 12 | "function-url-quotes": "always", 13 | "selector-attribute-quotes": "always", 14 | "string-quotes": "double", 15 | "at-rule-no-vendor-prefix": true, 16 | "media-feature-name-no-vendor-prefix": true, 17 | "property-no-vendor-prefix": true, 18 | "selector-no-vendor-prefix": true, 19 | "value-no-vendor-prefix": true 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # vue-parcel-starterkit 2 | > Parcel starterkit for Vue.js with single file components & hot reloading. 🎉 3 | 4 | `vue-parcel-starterkit` is inspired by [vue-parcel-example](https://github.com/rohitkrai03/vue-parcel-example). 5 | The main difference is that this starterkit supports Vue single file components. 6 | 7 | # Requirements 8 | 9 | - Node >= v8 10 | - [Parcel](https://parceljs.org) 11 | 12 | # What's in the box? 13 | 14 | - [eslint-config-airbnb](https://github.com/airbnb/javascript/tree/master/packages/eslint-config-airbnb) 15 | - [stylelint](https://github.com/stylelint/stylelint) 16 | - [parcel-plugin-vue](https://github.com/lc60005457/parcel-plugin-vue) 17 | 18 | # Getting started 19 | 20 | Clone this repository, and run `npm install`. 21 | 22 | **Development** 23 | ```bash 24 | npm run dev 25 | ``` 26 | 27 | **Production** 28 | ```bash 29 | npm run build 30 | ``` 31 | -------------------------------------------------------------------------------- /app/app.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 24 | 25 | 38 | -------------------------------------------------------------------------------- /app/styles/base.scss: -------------------------------------------------------------------------------- 1 | .app { 2 | font-family: Avenir, Helvetica, Arial, sans-serif; 3 | -webkit-font-smoothing: antialiased; 4 | -moz-osx-font-smoothing: grayscale; 5 | text-align: center; 6 | margin-top: 60px; 7 | } 8 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | vue-parcel-starterkit 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | import app from './app/app.vue'; 2 | 3 | window.onload = () => { 4 | /* eslint-disable */ 5 | new Vue({ 6 | /* eslint-enable */ 7 | el: 'app', 8 | components: { 9 | app, 10 | }, 11 | }); 12 | }; 13 | 14 | if (module.hot) { 15 | module.hot.accept(); 16 | } 17 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-parcel-starterkit", 3 | "version": "1.0.0", 4 | "main": "index.js", 5 | "scripts": { 6 | "dev": "NODE_ENV=development parcel index.html", 7 | "build": "NODE_ENV=production parcel build index.html --no-minify" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "keywords": [], 12 | "description": "", 13 | "devDependencies": { 14 | "babel-preset-env": "^1.6.1", 15 | "node-sass": "^4.7.2", 16 | "parcel-bundler": "^1.2.1", 17 | "stylelint": "^8.0.0", 18 | "stylelint-config-standard": "^17.0.0", 19 | "stylelint-scss": "^1.4.4", 20 | "eslint": "^4.4.1", 21 | "eslint-config-airbnb-base": "^11.3.1", 22 | "eslint-plugin-html": "^3.2.0", 23 | "eslint-plugin-import": "^2.7.0" 24 | }, 25 | "dependencies": { 26 | "babel-eslint": "^8.0.3", 27 | "parcel-plugin-vue": "^1.3.0", 28 | "vue": "^2.5.11" 29 | } 30 | } 31 | --------------------------------------------------------------------------------