├── .all-contributorsrc ├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .gitattributes ├── .gitignore ├── .prettierrc ├── .stylelintrc ├── .travis.yml ├── LICENSE ├── README.md ├── bin ├── cli.js ├── deploy │ ├── build.js │ ├── env.json │ └── index.html └── zip.js ├── developer-guide.md ├── docs ├── api.md └── scroll.md ├── generator ├── modules.js ├── saofile.js └── utils.js ├── lhci.sh ├── netlify.sh ├── notify.sh ├── package.json ├── template.config.js ├── template ├── docker-cmd │ └── .postinstall.sh ├── framework-admin │ ├── .env │ ├── _package.json │ ├── assets │ │ ├── export.less │ │ └── svg │ │ │ └── logo.svg │ ├── components │ │ ├── breadcrumb │ │ │ └── bread-data.js │ │ ├── sidebar.vue │ │ └── svg-icon.vue │ ├── containers │ │ ├── header.vue │ │ ├── module-header.vue │ │ └── module-layout.vue │ ├── layouts │ │ ├── README.md │ │ ├── blank.vue │ │ ├── default.vue │ │ └── login.vue │ ├── pages │ │ ├── account │ │ │ ├── field.vue │ │ │ ├── group.vue │ │ │ ├── organization.vue │ │ │ ├── position.vue │ │ │ └── staff.vue │ │ ├── dashboard.vue │ │ ├── help.vue │ │ ├── index.vue │ │ └── login.vue │ ├── plugins │ │ └── svg-icon.js │ └── store │ │ └── index.js ├── framework-base │ ├── .editorconfig │ ├── .npmignore │ ├── .prettierrc │ ├── .stylelintrc │ ├── README.md │ ├── _.eslintrc.js │ ├── _.gitignore │ ├── _package.json │ ├── assets │ │ └── README.md │ ├── commitlint.config.js │ ├── components │ │ └── README.md │ ├── jsconfig.json │ ├── layouts │ │ └── README.md │ ├── middleware │ │ └── README.md │ ├── nuxt.config.js │ ├── pages │ │ └── README.md │ ├── plugins │ │ └── README.md │ ├── static │ │ ├── README.md │ │ ├── favicon.ico │ │ └── icon.png │ └── store │ │ └── README.md ├── framework-mobile │ ├── README.md │ ├── _package.json │ ├── assets │ │ ├── README.md │ │ ├── global.less │ │ ├── icon.png │ │ └── var.less │ ├── components │ │ ├── agreement.vue │ │ └── header-nav-bar.vue │ ├── layouts │ │ ├── default.vue │ │ ├── layout-with-footer.vue │ │ └── login.vue │ ├── pages │ │ ├── cart.vue │ │ ├── goods-detail.vue │ │ ├── index.vue │ │ ├── login.vue │ │ ├── my.vue │ │ └── order-list.vue │ ├── plugins │ │ └── vant.js │ ├── postcss.config.js │ └── store │ │ └── index.js └── modules │ ├── auth │ └── middleware │ │ ├── auth-ssr.js │ │ └── auth.js │ ├── axios │ └── plugins │ │ └── axios.js │ ├── breadcrumb │ ├── components │ │ └── breadcrumb │ │ │ └── index.vue │ └── store │ │ └── bread.js │ ├── components-desktop │ └── components │ │ ├── go-back.vue │ │ ├── menu-item.vue │ │ └── route-tab.vue │ ├── components │ └── components │ │ ├── copyright.vue │ │ └── logo.vue │ ├── constant │ └── const │ │ ├── cookie-keys.js │ │ └── path.js │ ├── cypress │ ├── _package.json │ ├── cypress.json │ └── test │ │ └── e2e │ │ ├── _.eslintrc.js │ │ ├── config │ │ ├── local.json │ │ └── uat.json │ │ ├── fixtures │ │ └── user.json │ │ ├── integration │ │ └── login │ │ │ └── login.spec.js │ │ ├── plugins │ │ └── index.js │ │ └── support │ │ ├── commands │ │ ├── fill.js │ │ └── index.js │ │ └── index.js │ ├── element-ui │ └── plugins │ │ └── element.js │ ├── filters │ ├── plugins │ │ └── filters.js │ └── test │ │ └── unit │ │ └── filters.test.js │ ├── gitlab-ci │ └── .gitlab-ci.yml │ ├── icon-font │ ├── components │ │ └── icon-font.vue │ └── plugins │ │ └── icon-font.js │ ├── jest │ ├── _.babelrc │ ├── jest.config.js │ └── test │ │ └── unit │ │ ├── _.eslintrc.js │ │ ├── getRouterBase.test.js │ │ └── parseServices.test.js │ ├── meta │ ├── const │ │ └── meta.js │ └── middleware │ │ └── meta.js │ ├── release-log │ └── .grenrc.js │ ├── service │ ├── plugins │ │ └── services.js │ └── services │ │ ├── basic.js │ │ ├── common │ │ ├── api.js │ │ └── repository.js │ │ ├── example.js │ │ └── index.js │ ├── styles-desktop │ └── assets │ │ ├── global.less │ │ └── var.less │ ├── styles │ └── assets │ │ └── normalize.less │ ├── typescript │ ├── _package.json │ ├── src │ │ ├── pages │ │ │ └── login.vue │ │ └── types │ │ │ ├── extend.d.ts │ │ │ ├── tsx-shim.d.ts │ │ │ └── vue-shim.d.ts │ └── tsconfig.json │ └── utils │ └── utils │ └── index.js ├── test ├── cypress.test.js ├── docker.test.js ├── index.test.js ├── snapshots │ ├── cypress.test.js.md │ ├── cypress.test.js.snap │ ├── docker.test.js.md │ ├── docker.test.js.snap │ ├── index.test.js.md │ ├── index.test.js.snap │ ├── typescript.test.js.md │ └── typescript.test.js.snap └── typescript.test.js ├── utils └── test.js └── yarn.lock /.all-contributorsrc: -------------------------------------------------------------------------------- 1 | { 2 | "projectName": "create-nuxt-app", 3 | "projectOwner": "FEMessage", 4 | "repoType": "github", 5 | "repoHost": "https://github.com", 6 | "files": [ 7 | "README.md" 8 | ], 9 | "imageSize": 100, 10 | "commit": false, 11 | "commitConvention": "angular", 12 | "contributors": [ 13 | { 14 | "login": "lianghx-319", 15 | "name": "Han", 16 | "avatar_url": "https://avatars2.githubusercontent.com/u/27187946?v=4", 17 | "profile": "https://github.com/lianghx-319", 18 | "contributions": [ 19 | "code", 20 | "doc", 21 | "test", 22 | "infra" 23 | ] 24 | }, 25 | { 26 | "login": "donaldshen", 27 | "name": "Donald Shen", 28 | "avatar_url": "https://avatars3.githubusercontent.com/u/19591950?v=4", 29 | "profile": "https://donaldshen.github.io/portfolio", 30 | "contributions": [ 31 | "code", 32 | "test", 33 | "maintenance" 34 | ] 35 | }, 36 | { 37 | "login": "levy9527", 38 | "name": "levy", 39 | "avatar_url": "https://avatars3.githubusercontent.com/u/9384365?v=4", 40 | "profile": "https://github.com/levy9527/blog", 41 | "contributions": [ 42 | "review", 43 | "infra" 44 | ] 45 | }, 46 | { 47 | "login": "OuZuYu", 48 | "name": "OuZuYu", 49 | "avatar_url": "https://avatars3.githubusercontent.com/u/26338853?v=4", 50 | "profile": "http://67.216.223.155/resume/", 51 | "contributions": [ 52 | "code" 53 | ] 54 | }, 55 | { 56 | "login": "evillt", 57 | "name": "EVILLT", 58 | "avatar_url": "https://avatars3.githubusercontent.com/u/19513289?v=4", 59 | "profile": "https://evila.me", 60 | "contributions": [ 61 | "code", 62 | "doc", 63 | "tool" 64 | ] 65 | }, 66 | { 67 | "login": "colmugx", 68 | "name": "ColMugX", 69 | "avatar_url": "https://avatars1.githubusercontent.com/u/21327913?v=4", 70 | "profile": "https://colmugx.github.io", 71 | "contributions": [ 72 | "code" 73 | ] 74 | }, 75 | { 76 | "login": "shoyuf", 77 | "name": "Shoyuf", 78 | "avatar_url": "https://avatars3.githubusercontent.com/u/27998490?v=4", 79 | "profile": "https://shoyuf.top", 80 | "contributions": [ 81 | "code" 82 | ] 83 | }, 84 | { 85 | "login": "zhn4", 86 | "name": "zhn4", 87 | "avatar_url": "https://avatars2.githubusercontent.com/u/11404946?v=4", 88 | "profile": "https://github.com/zhn4", 89 | "contributions": [ 90 | "code" 91 | ] 92 | }, 93 | { 94 | "login": "gd4Ark", 95 | "name": "4Ark", 96 | "avatar_url": "https://avatars0.githubusercontent.com/u/27952659?v=4", 97 | "profile": "https://4ark.me", 98 | "contributions": [ 99 | "code", 100 | "bug" 101 | ] 102 | } 103 | ], 104 | "contributorsPerLine": 7, 105 | "skipCi": true 106 | } 107 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | template 2 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | env: { 4 | browser: true, 5 | node: true, 6 | }, 7 | parserOptions: { 8 | parser: 'babel-eslint', 9 | }, 10 | plugins: [ 11 | 'prettier', 12 | 'node', 13 | 'vue', 14 | 'promise' 15 | ], 16 | extends: [ 17 | "eslint:recommended", 18 | "plugin:node/recommended", 19 | "plugin:promise/recommended", 20 | 'plugin:vue/recommended', 21 | 'plugin:prettier/recommended', 22 | ], 23 | rules: { 24 | 'no-console': 'off', 25 | 'no-debugger': 'error', 26 | 'prettier/prettier': 'error', 27 | }, 28 | } 29 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Dependencies 2 | node_modules 3 | 4 | # Logs 5 | npm-debug.log 6 | 7 | # Coverage 8 | coverage 9 | .nyc_output 10 | 11 | # Editors 12 | .vscode 13 | .idea 14 | 15 | # Misc 16 | .DS_Store 17 | 18 | # build 19 | release/ 20 | dist/ 21 | 22 | package-lock.json 23 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | semi: false 2 | singleQuote: true 3 | bracketSpacing: false 4 | trailingComma: all 5 | -------------------------------------------------------------------------------- /.stylelintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "stylelint-config-standard", 3 | "rules": { 4 | "no-empty-source": null, 5 | "declaration-colon-newline-after": null, 6 | "value-list-comma-newline-after": null, 7 | "no-descending-specificity": null, 8 | "no-duplicate-selectors": null, 9 | "declaration-block-no-shorthand-property-overrides": null 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | branches: 2 | only: 3 | - master 4 | - dev 5 | language: node_js 6 | node_js: 7 | - lts/* 8 | git: 9 | depth: 30 10 | install: 11 | - yarn --frozen-lockfile 12 | script: 13 | - yarn test 14 | - yarn generate 15 | - yarn build 16 | # https://stackoverflow.com/questions/37544306/travis-different-script-for-different-branch 17 | - test "$TRAVIS_BRANCH" = "dev" && ./lhci.sh || echo skip 18 | - test "$TRAVIS_BRANCH" = "master" && yarn zip || echo skip 19 | after_script: 20 | - ./notify.sh 21 | addons: 22 | chrome: stable 23 | cache: 24 | - yarn 25 | - directories: 26 | - release/nuxt-admin/node_modules 27 | - release/nuxt-vant/node_modules 28 | deploy: 29 | - provider: pages 30 | skip_cleanup: true 31 | github_token: $GITHUB_TOKEN # Set in the settings page of your repository, as a secure variable 32 | local-dir: dist 33 | on: 34 | branch: master 35 | - provider: script 36 | skip_cleanup: true 37 | script: npx semantic-release 38 | on: 39 | branch: master 40 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 FEMessage 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /bin/cli.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | const cli = require('cac')() 3 | const path = require('path') 4 | const sao = require('sao') 5 | const configs = require('../template.config') 6 | 7 | cli.version(require('../package.json').version) 8 | cli.help() 9 | 10 | cli.option('-l, --list', 'the list of preset template') // 优先级 1 11 | cli.option('-a, --all', 'generate all preset template') // 优先级 2 12 | cli.option('-t, --template