expeditaea 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- package/.all-contributorsrc +135 -0
- package/.editorconfig +13 -0
- package/.eslintignore +16 -0
- package/.eslintrc.js +92 -0
- package/.github/FUNDING.yml +7 -0
- package/.github/ISSUE_TEMPLATE/bug-report.md +47 -0
- package/.github/ISSUE_TEMPLATE/config.yml +6 -0
- package/.github/ISSUE_TEMPLATE/feature-request.md +26 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +24 -0
- package/.github/lock.yml +9 -0
- package/.github/nuxt.png +0 -0
- package/.github/stale.yml +24 -0
- package/.github/workflows/nightly.yml +49 -0
- package/.github/workflows/test.yml +355 -0
- package/.github/workflows/windows.yml +165 -0
- package/.gitpod.yml +6 -0
- package/.ls-lint.yml +8 -0
- package/.yarnrc +1 -0
- package/babel.config.js +18 -0
- package/benchmarks/README.md +29 -0
- package/benchmarks/package.json +10 -0
- package/benchmarks/pages/stateless-big.vue +7 -0
- package/benchmarks/pages/stateless.vue +3 -0
- package/distributions/nuxt/README.md +153 -0
- package/distributions/nuxt/bin/nuxt.js +10 -0
- package/distributions/nuxt/package.js +29 -0
- package/distributions/nuxt/package.json +54 -0
- package/distributions/nuxt/src/index.js +5 -0
- package/distributions/nuxt/webpack.config.js +4 -0
- package/distributions/nuxt-start/README.md +42 -0
- package/distributions/nuxt-start/bin/nuxt-start.js +14 -0
- package/distributions/nuxt-start/package.js +42 -0
- package/distributions/nuxt-start/package.json +44 -0
- package/distributions/nuxt-start/src/index.js +1 -0
- package/examples/async-component-injection/README.md +3 -0
- package/examples/async-component-injection/assets/css/common.css +69 -0
- package/examples/async-component-injection/assets/css/index.css +57 -0
- package/examples/async-component-injection/assets/css/post.css +307 -0
- package/examples/async-component-injection/assets/img/github.png +0 -0
- package/examples/async-component-injection/assets/img/swimmer.jpg +0 -0
- package/examples/async-component-injection/assets/img/twitter.png +0 -0
- package/examples/async-component-injection/layouts/default.vue +20 -0
- package/examples/async-component-injection/nuxt.config.js +22 -0
- package/examples/async-component-injection/package.json +12 -0
- package/examples/async-component-injection/pages/_slug.vue +21 -0
- package/examples/async-component-injection/pages/index.vue +30 -0
- package/examples/async-component-injection/posts/404.vue +5 -0
- package/examples/async-component-injection/posts/deep-dive-into-ocean.vue +19 -0
- package/examples/async-component-injection/posts/welcome-to-my-blog.vue +12 -0
- package/examples/async-component-injection/static/favicon.ico +0 -0
- package/examples/async-data/README.md +3 -0
- package/examples/async-data/nuxt.config.js +15 -0
- package/examples/async-data/package.json +13 -0
- package/examples/async-data/pages/index.vue +35 -0
- package/examples/async-data/pages/posts/_id.vue +55 -0
- package/examples/async-data/pages/posts/index.vue +64 -0
- package/examples/auth-jwt/README.md +3 -0
- package/examples/auth-jwt/middleware/authenticated.js +6 -0
- package/examples/auth-jwt/middleware/notAuthenticated.js +6 -0
- package/examples/auth-jwt/package.json +14 -0
- package/examples/auth-jwt/pages/index.vue +34 -0
- package/examples/auth-jwt/pages/login.vue +37 -0
- package/examples/auth-jwt/pages/secret.vue +14 -0
- package/examples/auth-jwt/store/index.js +26 -0
- package/examples/auth-routes/README.md +3 -0
- package/examples/auth-routes/api/index.js +36 -0
- package/examples/auth-routes/middleware/auth.js +8 -0
- package/examples/auth-routes/nuxt.config.js +32 -0
- package/examples/auth-routes/package.json +16 -0
- package/examples/auth-routes/pages/index.vue +72 -0
- package/examples/auth-routes/pages/secret.vue +15 -0
- package/examples/auth-routes/store/index.js +37 -0
- package/examples/axios/README.md +38 -0
- package/examples/axios/nuxt.config.js +9 -0
- package/examples/axios/package.json +15 -0
- package/examples/axios/pages/index.vue +17 -0
- package/examples/cached-components/README.md +1 -0
- package/examples/cached-components/nuxt.config.js +10 -0
- package/examples/cached-components/package.json +13 -0
- package/examples/cached-components/pages/index.vue +20 -0
- package/examples/coffeescript/README.md +22 -0
- package/examples/coffeescript/components/Logo.vue +79 -0
- package/examples/coffeescript/layouts/default.vue +52 -0
- package/examples/coffeescript/modules/coffeescript.js +17 -0
- package/examples/coffeescript/nuxt.config.js +24 -0
- package/examples/coffeescript/package.json +20 -0
- package/examples/coffeescript/pages/README.md +7 -0
- package/examples/coffeescript/pages/index.vue +58 -0
- package/examples/coffeescript/static/favicon.ico +0 -0
- package/examples/coffeescript/store/index.coffee +2 -0
- package/examples/custom-build/README.md +1 -0
- package/examples/custom-build/assets/nuxt.png +0 -0
- package/examples/custom-build/nuxt.config.js +26 -0
- package/examples/custom-build/package.json +13 -0
- package/examples/custom-build/pages/index.vue +15 -0
- package/examples/custom-layouts/README.md +5 -0
- package/examples/custom-layouts/layouts/dark.vue +24 -0
- package/examples/custom-layouts/layouts/default.vue +15 -0
- package/examples/custom-layouts/layouts/error.vue +35 -0
- package/examples/custom-layouts/package.json +12 -0
- package/examples/custom-layouts/pages/about.vue +19 -0
- package/examples/custom-layouts/pages/index.vue +8 -0
- package/examples/custom-layouts/static/logo.png +0 -0
- package/examples/custom-loading/README.md +3 -0
- package/examples/custom-loading/components/loading.vue +36 -0
- package/examples/custom-loading/nuxt.config.js +3 -0
- package/examples/custom-loading/package.json +12 -0
- package/examples/custom-loading/pages/about.vue +28 -0
- package/examples/custom-loading/pages/index.vue +28 -0
- package/examples/custom-page-loading/README.md +5 -0
- package/examples/custom-page-loading/package.json +12 -0
- package/examples/custom-page-loading/pages/about.vue +53 -0
- package/examples/custom-page-loading/pages/final.vue +21 -0
- package/examples/custom-page-loading/pages/index.vue +28 -0
- package/examples/custom-port-host/README.md +3 -0
- package/examples/custom-port-host/nuxt.config.js +6 -0
- package/examples/custom-port-host/package.json +12 -0
- package/examples/custom-port-host/pages/index.vue +3 -0
- package/examples/custom-routes/README.md +3 -0
- package/examples/custom-routes/nuxt.config.js +2 -0
- package/examples/custom-routes/package.json +13 -0
- package/examples/custom-routes/pages/index.vue +46 -0
- package/examples/custom-routes/pages/users/_id.vue +38 -0
- package/examples/custom-server/README.md +3 -0
- package/examples/custom-server/nuxt.config.js +1 -0
- package/examples/custom-server/package.json +13 -0
- package/examples/custom-server/pages/index.vue +7 -0
- package/examples/custom-server/server.js +25 -0
- package/examples/custom-template/app.html +13 -0
- package/examples/custom-template/nuxt.config.js +5 -0
- package/examples/custom-template/package.json +12 -0
- package/examples/custom-template/pages/index.vue +5 -0
- package/examples/docker-build/.dockerignore +84 -0
- package/examples/docker-build/.yarnclean +5 -0
- package/examples/docker-build/Dockerfile +31 -0
- package/examples/docker-build/README.md +12 -0
- package/examples/docker-build/assets/README.md +1 -0
- package/examples/docker-build/components/README.md +1 -0
- package/examples/docker-build/layouts/README.md +1 -0
- package/examples/docker-build/layouts/default.vue +8 -0
- package/examples/docker-build/middleware/README.md +1 -0
- package/examples/docker-build/nuxt.config.js +54 -0
- package/examples/docker-build/package.json +15 -0
- package/examples/docker-build/pages/README.md +1 -0
- package/examples/docker-build/pages/index.vue +12 -0
- package/examples/docker-build/plugins/README.md +1 -0
- package/examples/docker-build/static/README.md +1 -0
- package/examples/docker-build/static/favicon.ico +0 -0
- package/examples/docker-build/store/README.md +1 -0
- package/examples/dynamic-components/README.md +5 -0
- package/examples/dynamic-components/components/chart.js +9 -0
- package/examples/dynamic-components/components/code.vue +23 -0
- package/examples/dynamic-components/components/image.vue +71 -0
- package/examples/dynamic-components/components/text.vue +22 -0
- package/examples/dynamic-components/js/messages.js +27 -0
- package/examples/dynamic-components/nuxt.config.js +9 -0
- package/examples/dynamic-components/package.json +15 -0
- package/examples/dynamic-components/pages/index.vue +71 -0
- package/examples/dynamic-components/pages/ssr.vue +63 -0
- package/examples/dynamic-layouts/README.md +3 -0
- package/examples/dynamic-layouts/layouts/error.vue +36 -0
- package/examples/dynamic-layouts/layouts/mobile.vue +39 -0
- package/examples/dynamic-layouts/middleware/mobile.js +4 -0
- package/examples/dynamic-layouts/nuxt.config.js +10 -0
- package/examples/dynamic-layouts/package.json +12 -0
- package/examples/dynamic-layouts/pages/about.vue +19 -0
- package/examples/dynamic-layouts/pages/index.vue +14 -0
- package/examples/dynamic-layouts/static/logo.png +0 -0
- package/examples/global-css/README.md +3 -0
- package/examples/global-css/assets/roboto.woff2 +0 -0
- package/examples/global-css/css/main.css +22 -0
- package/examples/global-css/nuxt.config.js +20 -0
- package/examples/global-css/package.json +13 -0
- package/examples/global-css/pages/about.vue +17 -0
- package/examples/global-css/pages/index.vue +17 -0
- package/examples/hello-world/README.md +3 -0
- package/examples/hello-world/nuxt.config.js +0 -0
- package/examples/hello-world/package.json +12 -0
- package/examples/hello-world/pages/about.vue +21 -0
- package/examples/hello-world/pages/index.vue +16 -0
- package/examples/i18n/README.md +5 -0
- package/examples/i18n/layouts/default.vue +95 -0
- package/examples/i18n/locales/en.json +16 -0
- package/examples/i18n/locales/fr.json +16 -0
- package/examples/i18n/middleware/i18n.js +21 -0
- package/examples/i18n/nuxt.config.js +10 -0
- package/examples/i18n/package.json +14 -0
- package/examples/i18n/pages/_lang/about.vue +18 -0
- package/examples/i18n/pages/_lang/index.vue +18 -0
- package/examples/i18n/pages/about.vue +4 -0
- package/examples/i18n/pages/index.vue +4 -0
- package/examples/i18n/plugins/i18n.js +25 -0
- package/examples/i18n/store/index.js +12 -0
- package/examples/jest-puppeteer/README.md +43 -0
- package/examples/jest-puppeteer/jest-puppeteer.config.js +10 -0
- package/examples/jest-puppeteer/jest.config.js +4 -0
- package/examples/jest-puppeteer/package.json +19 -0
- package/examples/jest-puppeteer/pages/about.vue +23 -0
- package/examples/jest-puppeteer/pages/index.vue +16 -0
- package/examples/jest-puppeteer/test/__snapshots__/index.spec.js.snap +5 -0
- package/examples/jest-puppeteer/test/index.spec.js +32 -0
- package/examples/jest-vtu-example/.eslintignore +1 -0
- package/examples/jest-vtu-example/README.md +13 -0
- package/examples/jest-vtu-example/babel.config.js +7 -0
- package/examples/jest-vtu-example/components/Btn/Btn.spec.js +34 -0
- package/examples/jest-vtu-example/components/Btn/Btn.vue +25 -0
- package/examples/jest-vtu-example/components/Btn/__snapshots__/Btn.spec.js.snap +7 -0
- package/examples/jest-vtu-example/layouts/default.vue +5 -0
- package/examples/jest-vtu-example/nuxt.config.js +3 -0
- package/examples/jest-vtu-example/package.json +47 -0
- package/examples/jest-vtu-example/pages/__snapshots__/index.spec.js.snap +12 -0
- package/examples/jest-vtu-example/pages/index.spec.js +14 -0
- package/examples/jest-vtu-example/pages/index.vue +20 -0
- package/examples/jsx/README.md +7 -0
- package/examples/jsx/components/test.vue +22 -0
- package/examples/jsx/package.json +12 -0
- package/examples/jsx/pages/about.js +21 -0
- package/examples/jsx/pages/index.js +20 -0
- package/examples/layout-transitions/README.md +3 -0
- package/examples/layout-transitions/assets/main.css +52 -0
- package/examples/layout-transitions/layouts/secondary.vue +6 -0
- package/examples/layout-transitions/nuxt.config.js +7 -0
- package/examples/layout-transitions/package.json +12 -0
- package/examples/layout-transitions/pages/about.vue +18 -0
- package/examples/layout-transitions/pages/index.vue +28 -0
- package/examples/layout-transitions/pages/users-2.vue +104 -0
- package/examples/layout-transitions/pages/users.vue +89 -0
- package/examples/markdownit/README.md +5 -0
- package/examples/markdownit/nuxt.config.js +8 -0
- package/examples/markdownit/package.json +18 -0
- package/examples/markdownit/pages/about.vue +6 -0
- package/examples/markdownit/pages/index.vue +19 -0
- package/examples/markdownit/pages/pug.vue +20 -0
- package/examples/markdownit/plugins/md-it.js +5 -0
- package/examples/meta-info/README.md +13 -0
- package/examples/meta-info/components/twitter-head-card.vue +22 -0
- package/examples/meta-info/nuxt.config.js +13 -0
- package/examples/meta-info/package.json +12 -0
- package/examples/meta-info/pages/about.vue +36 -0
- package/examples/meta-info/pages/index.vue +36 -0
- package/examples/meta-info/static/about.js +1 -0
- package/examples/meta-info/static/body.js +1 -0
- package/examples/meta-info/static/defer.js +1 -0
- package/examples/meta-info/static/head.js +1 -0
- package/examples/middleware/README.md +6 -0
- package/examples/middleware/components/Visits.vue +42 -0
- package/examples/middleware/layouts/default.vue +14 -0
- package/examples/middleware/middleware/user-agent.js +3 -0
- package/examples/middleware/middleware/visits.js +3 -0
- package/examples/middleware/nuxt.config.js +5 -0
- package/examples/middleware/package.json +12 -0
- package/examples/middleware/pages/_slug.vue +33 -0
- package/examples/middleware/store/index.js +12 -0
- package/examples/minimal-features/README.md +3 -0
- package/examples/minimal-features/nuxt.config.js +28 -0
- package/examples/minimal-features/package.json +12 -0
- package/examples/minimal-features/pages/about.vue +21 -0
- package/examples/minimal-features/pages/index.vue +16 -0
- package/examples/named-views/README.md +1 -0
- package/examples/named-views/components/childLeft.vue +15 -0
- package/examples/named-views/components/mainTop.vue +19 -0
- package/examples/named-views/layouts/default.vue +6 -0
- package/examples/named-views/nuxt.config.js +30 -0
- package/examples/named-views/package.json +12 -0
- package/examples/named-views/pages/index/child/_id/index.vue +24 -0
- package/examples/named-views/pages/index/section.vue +16 -0
- package/examples/named-views/pages/index.vue +73 -0
- package/examples/named-views/pages/main.vue +50 -0
- package/examples/nested-components/README.md +1 -0
- package/examples/nested-components/components/paragraph.vue +12 -0
- package/examples/nested-components/components/post.vue +32 -0
- package/examples/nested-components/package.json +12 -0
- package/examples/nested-components/pages/index.vue +54 -0
- package/examples/nested-routes/README.md +3 -0
- package/examples/nested-routes/nuxt.config.js +29 -0
- package/examples/nested-routes/package.json +13 -0
- package/examples/nested-routes/pages/index/_id.vue +34 -0
- package/examples/nested-routes/pages/index/index.vue +19 -0
- package/examples/nested-routes/pages/index.vue +77 -0
- package/examples/new-fetch/README.md +5 -0
- package/examples/new-fetch/components/Author.vue +30 -0
- package/examples/new-fetch/layouts/default.vue +28 -0
- package/examples/new-fetch/nuxt.config.js +18 -0
- package/examples/new-fetch/package.json +18 -0
- package/examples/new-fetch/pages/index.vue +43 -0
- package/examples/new-fetch/pages/posts/_id.vue +54 -0
- package/examples/new-fetch/plugins/vue-placeholders.js +4 -0
- package/examples/no-ssr/README.md +3 -0
- package/examples/no-ssr/package.json +12 -0
- package/examples/no-ssr/pages/index.vue +17 -0
- package/examples/nuxt-prefetch/README.md +3 -0
- package/examples/nuxt-prefetch/assets/check.svg +1 -0
- package/examples/nuxt-prefetch/layouts/default.vue +57 -0
- package/examples/nuxt-prefetch/nuxt.config.js +22 -0
- package/examples/nuxt-prefetch/package.json +12 -0
- package/examples/nuxt-prefetch/pages/accelerated.vue +17 -0
- package/examples/nuxt-prefetch/pages/active.vue +17 -0
- package/examples/nuxt-prefetch/pages/agile.vue +17 -0
- package/examples/nuxt-prefetch/pages/brisk.vue +17 -0
- package/examples/nuxt-prefetch/pages/dashing.vue +17 -0
- package/examples/nuxt-prefetch/pages/electric.vue +17 -0
- package/examples/nuxt-prefetch/pages/flashing.vue +17 -0
- package/examples/nuxt-prefetch/pages/fleet.vue +17 -0
- package/examples/nuxt-prefetch/pages/fleeting.vue +17 -0
- package/examples/nuxt-prefetch/pages/flying.vue +17 -0
- package/examples/nuxt-prefetch/pages/hot.vue +17 -0
- package/examples/nuxt-prefetch/pages/hurried.vue +17 -0
- package/examples/nuxt-prefetch/pages/index.vue +17 -0
- package/examples/nuxt-prefetch/pages/nimble.vue +17 -0
- package/examples/nuxt-prefetch/pages/quick.vue +17 -0
- package/examples/nuxt-prefetch/pages/racing.vue +17 -0
- package/examples/nuxt-prefetch/pages/rapid.vue +17 -0
- package/examples/nuxt-prefetch/pages/ready.vue +17 -0
- package/examples/nuxt-prefetch/pages/snap.vue +17 -0
- package/examples/nuxt-prefetch/pages/swift.vue +17 -0
- package/examples/nuxt-prefetch/pages/winged.vue +17 -0
- package/examples/nuxt-prefetch/store/index.js +25 -0
- package/examples/plugins-vendor/README.md +3 -0
- package/examples/plugins-vendor/nuxt.config.js +6 -0
- package/examples/plugins-vendor/package.json +15 -0
- package/examples/plugins-vendor/pages/about.vue +29 -0
- package/examples/plugins-vendor/pages/index.vue +42 -0
- package/examples/plugins-vendor/plugins/vue-notifications.js +23 -0
- package/examples/programmatic/nuxt.config.js +5 -0
- package/examples/programmatic/package.json +12 -0
- package/examples/programmatic/pages/index.vue +5 -0
- package/examples/programmatic/scripts/build.js +8 -0
- package/examples/programmatic/scripts/dev.js +9 -0
- package/examples/programmatic/scripts/start.js +8 -0
- package/examples/pug/README.md +3 -0
- package/examples/pug/package.json +14 -0
- package/examples/pug/pages/about.vue +18 -0
- package/examples/pug/pages/index.vue +13 -0
- package/examples/pug-stylus-coffee/README.md +20 -0
- package/examples/pug-stylus-coffee/components/Logo.vue +66 -0
- package/examples/pug-stylus-coffee/components/README.md +7 -0
- package/examples/pug-stylus-coffee/layouts/README.md +7 -0
- package/examples/pug-stylus-coffee/layouts/default.vue +46 -0
- package/examples/pug-stylus-coffee/middleware/README.md +8 -0
- package/examples/pug-stylus-coffee/modules/coffeescript.js +17 -0
- package/examples/pug-stylus-coffee/nuxt.config.coffee +48 -0
- package/examples/pug-stylus-coffee/nuxt.config.js +2 -0
- package/examples/pug-stylus-coffee/package.json +25 -0
- package/examples/pug-stylus-coffee/pages/README.md +7 -0
- package/examples/pug-stylus-coffee/pages/index.vue +55 -0
- package/examples/pug-stylus-coffee/plugins/README.md +7 -0
- package/examples/pug-stylus-coffee/static/README.md +10 -0
- package/examples/pug-stylus-coffee/static/favicon.ico +0 -0
- package/examples/pug-stylus-coffee/store/README.md +10 -0
- package/examples/pug-stylus-coffee/store/index.coffee +3 -0
- package/examples/routes-meta/README.md +5 -0
- package/examples/routes-meta/layouts/default.vue +73 -0
- package/examples/routes-meta/middleware/theme.js +5 -0
- package/examples/routes-meta/nuxt.config.js +6 -0
- package/examples/routes-meta/package.json +13 -0
- package/examples/routes-meta/pages/about.vue +32 -0
- package/examples/routes-meta/pages/index.vue +22 -0
- package/examples/routes-meta/pages/parent/blue.vue +20 -0
- package/examples/routes-meta/pages/parent.vue +18 -0
- package/examples/routes-meta/store/index.js +9 -0
- package/examples/routes-transitions/README.md +3 -0
- package/examples/routes-transitions/assets/main.css +45 -0
- package/examples/routes-transitions/nuxt.config.js +3 -0
- package/examples/routes-transitions/package.json +12 -0
- package/examples/routes-transitions/pages/about.vue +14 -0
- package/examples/routes-transitions/pages/index.vue +15 -0
- package/examples/routes-transitions/pages/users.vue +87 -0
- package/examples/scroll-behavior/README.md +3 -0
- package/examples/scroll-behavior/assets/main.css +69 -0
- package/examples/scroll-behavior/layouts/default2.vue +3 -0
- package/examples/scroll-behavior/nuxt.config.js +4 -0
- package/examples/scroll-behavior/package.json +14 -0
- package/examples/scroll-behavior/pages/about/contact.vue +13 -0
- package/examples/scroll-behavior/pages/about/profile.vue +12 -0
- package/examples/scroll-behavior/pages/about.vue +27 -0
- package/examples/scroll-behavior/pages/another-long.vue +16 -0
- package/examples/scroll-behavior/pages/index.vue +31 -0
- package/examples/scroll-behavior/pages/long.vue +42 -0
- package/examples/scroll-behavior/pages/users.vue +87 -0
- package/examples/spa/README.md +2 -0
- package/examples/spa/assets/main.css +6 -0
- package/examples/spa/nuxt.config.js +41 -0
- package/examples/spa/package.json +12 -0
- package/examples/spa/pages/about.vue +18 -0
- package/examples/spa/pages/index.vue +8 -0
- package/examples/spa/static/favicon.ico +0 -0
- package/examples/static-images/README.md +3 -0
- package/examples/static-images/package.json +12 -0
- package/examples/static-images/pages/about.vue +40 -0
- package/examples/static-images/pages/index.vue +19 -0
- package/examples/static-images/static/nuxt-black.png +0 -0
- package/examples/static-images/static/nuxt.png +0 -0
- package/examples/storybook/.storybook/addons.js +5 -0
- package/examples/storybook/.storybook/config.js +21 -0
- package/examples/storybook/.storybook/webpack.config.js +14 -0
- package/examples/storybook/README.md +44 -0
- package/examples/storybook/components/Button.vue +36 -0
- package/examples/storybook/components/Layout.vue +92 -0
- package/examples/storybook/components/LineChart.js +9 -0
- package/examples/storybook/components/Logo.vue +79 -0
- package/examples/storybook/components/VuetifyLogo.vue +16 -0
- package/examples/storybook/components/Welcome.vue +124 -0
- package/examples/storybook/layouts/default.vue +102 -0
- package/examples/storybook/nuxt.config.js +40 -0
- package/examples/storybook/package.json +35 -0
- package/examples/storybook/pages/index.vue +63 -0
- package/examples/storybook/pages/inspire.vue +15 -0
- package/examples/storybook/plugins/vuetify.js +15 -0
- package/examples/storybook/static/favicon.ico +0 -0
- package/examples/storybook/static/v.png +0 -0
- package/examples/storybook/store/README.md +10 -0
- package/examples/storybook/stories/LineChart.story.js +92 -0
- package/examples/storybook/stories/Logo.story.js +45 -0
- package/examples/storybook/stories/MyButton.story.js +14 -0
- package/examples/storybook/stories/Welcome.story.js +14 -0
- package/examples/storybook/stories/collection.story.js +227 -0
- package/examples/storybook/stories/storybase.js +82 -0
- package/examples/storybook/stories/vuetify.story.js +110 -0
- package/examples/style-resources/README.md +56 -0
- package/examples/style-resources/assets/resources.less +1 -0
- package/examples/style-resources/assets/variables.scss +1 -0
- package/examples/style-resources/nuxt.config.js +9 -0
- package/examples/style-resources/package.json +18 -0
- package/examples/style-resources/pages/index.vue +18 -0
- package/examples/style-resources/pages/less.vue +21 -0
- package/examples/styled-vue/README.md +5 -0
- package/examples/styled-vue/nuxt.config.js +5 -0
- package/examples/styled-vue/package.json +16 -0
- package/examples/styled-vue/pages/index.vue +35 -0
- package/examples/tailwindcss/README.md +5 -0
- package/examples/tailwindcss/assets/css/tailwind.css +57 -0
- package/examples/tailwindcss/layouts/default.vue +14 -0
- package/examples/tailwindcss/nuxt.config.js +3 -0
- package/examples/tailwindcss/package.json +17 -0
- package/examples/tailwindcss/pages/about.vue +21 -0
- package/examples/tailwindcss/pages/index.vue +29 -0
- package/examples/tailwindcss/postcss.config.js +6 -0
- package/examples/tailwindcss/tailwind.js +744 -0
- package/examples/tailwindcss-purgecss/.github/demo.png +0 -0
- package/examples/tailwindcss-purgecss/.github/pagespeed-desktop.png +0 -0
- package/examples/tailwindcss-purgecss/.github/pagespeed-mobile.png +0 -0
- package/examples/tailwindcss-purgecss/.github/tailwind-default.png +0 -0
- package/examples/tailwindcss-purgecss/.github/tailwind-purgecss.png +0 -0
- package/examples/tailwindcss-purgecss/README.md +27 -0
- package/examples/tailwindcss-purgecss/assets/css/tailwind.css +63 -0
- package/examples/tailwindcss-purgecss/components/MyComponent.vue +7 -0
- package/examples/tailwindcss-purgecss/layouts/default.vue +8 -0
- package/examples/tailwindcss-purgecss/nuxt.config.js +25 -0
- package/examples/tailwindcss-purgecss/package.json +25 -0
- package/examples/tailwindcss-purgecss/pages/index.vue +21 -0
- package/examples/tailwindcss-purgecss/tailwind.config.js +20 -0
- package/examples/uikit/README.md +7 -0
- package/examples/uikit/layouts/default.vue +5 -0
- package/examples/uikit/nuxt.config.js +6 -0
- package/examples/uikit/package.json +14 -0
- package/examples/uikit/pages/about.vue +21 -0
- package/examples/uikit/pages/index.vue +22 -0
- package/examples/uikit/plugins/uikit.js +5 -0
- package/examples/vue-apollo/README.md +9 -0
- package/examples/vue-apollo/apollo/queries/allCars.gql +8 -0
- package/examples/vue-apollo/apollo/queries/car.gql +8 -0
- package/examples/vue-apollo/nuxt.config.js +10 -0
- package/examples/vue-apollo/package.json +16 -0
- package/examples/vue-apollo/pages/car/_id.vue +49 -0
- package/examples/vue-apollo/pages/index.vue +44 -0
- package/examples/vue-chartjs/README.md +7 -0
- package/examples/vue-chartjs/components/bar-chart.js +9 -0
- package/examples/vue-chartjs/components/doughnut-chart.js +9 -0
- package/examples/vue-chartjs/layouts/default.vue +62 -0
- package/examples/vue-chartjs/nuxt.config.js +16 -0
- package/examples/vue-chartjs/package.json +16 -0
- package/examples/vue-chartjs/pages/contributors.vue +57 -0
- package/examples/vue-chartjs/pages/index.vue +44 -0
- package/examples/vue-class-component/README.md +3 -0
- package/examples/vue-class-component/components/Base.vue +49 -0
- package/examples/vue-class-component/components/Child.vue +30 -0
- package/examples/vue-class-component/package.json +13 -0
- package/examples/vue-class-component/pages/about.vue +10 -0
- package/examples/vue-class-component/pages/index.vue +19 -0
- package/examples/vuex-persistedstate/README.md +4 -0
- package/examples/vuex-persistedstate/nuxt.config.js +6 -0
- package/examples/vuex-persistedstate/package.json +13 -0
- package/examples/vuex-persistedstate/pages/index.vue +26 -0
- package/examples/vuex-persistedstate/store/index.js +14 -0
- package/examples/vuex-store/README.md +7 -0
- package/examples/vuex-store/package.json +12 -0
- package/examples/vuex-store/pages/about.vue +12 -0
- package/examples/vuex-store/pages/index.vue +44 -0
- package/examples/vuex-store/pages/todos.vue +45 -0
- package/examples/vuex-store/pages/website.vue +35 -0
- package/examples/vuex-store/store/articles/comments/mutations.js +5 -0
- package/examples/vuex-store/store/articles/comments.js +13 -0
- package/examples/vuex-store/store/articles.js +19 -0
- package/examples/vuex-store/store/index.js +9 -0
- package/examples/vuex-store/store/todos/getters.js +5 -0
- package/examples/vuex-store/store/todos/mutations.js +12 -0
- package/examples/vuex-store/store/todos/state.js +3 -0
- package/examples/web-worker/.eslintrc.js +19 -0
- package/examples/web-worker/README.md +26 -0
- package/examples/web-worker/assets/README.md +8 -0
- package/examples/web-worker/assets/js/Example.worker.js +19 -0
- package/examples/web-worker/components/AppLogo.vue +79 -0
- package/examples/web-worker/components/README.md +6 -0
- package/examples/web-worker/layouts/README.md +8 -0
- package/examples/web-worker/layouts/default.vue +58 -0
- package/examples/web-worker/nuxt.config.js +52 -0
- package/examples/web-worker/package.json +24 -0
- package/examples/web-worker/pages/README.md +7 -0
- package/examples/web-worker/pages/index.vue +185 -0
- package/examples/web-worker/plugins/README.md +8 -0
- package/examples/web-worker/plugins/inject-ww.js +9 -0
- package/examples/web-worker/static/README.md +11 -0
- package/examples/web-worker/static/favicon.ico +0 -0
- package/examples/with-amp/README.md +3 -0
- package/examples/with-amp/app.html +11 -0
- package/examples/with-amp/assets/main.css +23 -0
- package/examples/with-amp/components/Byline.vue +16 -0
- package/examples/with-amp/nuxt.config.js +39 -0
- package/examples/with-amp/package.json +14 -0
- package/examples/with-amp/pages/dog.vue +36 -0
- package/examples/with-amp/pages/index.vue +36 -0
- package/examples/with-amp/static/cat.jpg +0 -0
- package/examples/with-amp/static/dog.jpg +0 -0
- package/examples/with-ava/Readme.md +7 -0
- package/examples/with-ava/package.json +17 -0
- package/examples/with-ava/pages/index.vue +19 -0
- package/examples/with-ava/test/index.test.js +43 -0
- package/examples/with-buefy/README.md +3 -0
- package/examples/with-buefy/components/card.vue +42 -0
- package/examples/with-buefy/nuxt.config.js +12 -0
- package/examples/with-buefy/package.json +16 -0
- package/examples/with-buefy/pages/index.vue +43 -0
- package/examples/with-cookies/README.md +5 -0
- package/examples/with-cookies/nuxt.config.js +9 -0
- package/examples/with-cookies/package.json +14 -0
- package/examples/with-cookies/pages/index.vue +85 -0
- package/examples/with-cookies/plugins/cookies.js +34 -0
- package/examples/with-element-ui/README.md +3 -0
- package/examples/with-element-ui/layouts/default.vue +10 -0
- package/examples/with-element-ui/nuxt.config.js +15 -0
- package/examples/with-element-ui/package.json +19 -0
- package/examples/with-element-ui/pages/index.vue +108 -0
- package/examples/with-element-ui/plugins/element-ui.js +7 -0
- package/examples/with-feathers/.editorconfig +13 -0
- package/examples/with-feathers/.eslintrc.js +42 -0
- package/examples/with-feathers/.jshintrc +29 -0
- package/examples/with-feathers/LICENSE +22 -0
- package/examples/with-feathers/README.md +50 -0
- package/examples/with-feathers/config/default.json +11 -0
- package/examples/with-feathers/config/production.json +11 -0
- package/examples/with-feathers/nuxt.config.js +5 -0
- package/examples/with-feathers/package.json +47 -0
- package/examples/with-feathers/pages/about.vue +18 -0
- package/examples/with-feathers/pages/index.vue +8 -0
- package/examples/with-feathers/src/app.js +28 -0
- package/examples/with-feathers/src/hooks/index.js +11 -0
- package/examples/with-feathers/src/index.js +14 -0
- package/examples/with-feathers/src/middleware/index.js +10 -0
- package/examples/with-feathers/src/middleware/nuxt.js +23 -0
- package/examples/with-feathers/src/services/authentication/index.js +9 -0
- package/examples/with-feathers/src/services/index.js +9 -0
- package/examples/with-feathers/src/services/user/hooks/index.js +50 -0
- package/examples/with-feathers/src/services/user/index.js +33 -0
- package/examples/with-feathers/static/favicon.ico +0 -0
- package/examples/with-feathers/test/app.test.js +36 -0
- package/examples/with-feathers/test/services/user/index.test.js +8 -0
- package/examples/with-firebase/README.md +29 -0
- package/examples/with-firebase/layouts/default.vue +29 -0
- package/examples/with-firebase/nuxt.config.js +11 -0
- package/examples/with-firebase/package.json +21 -0
- package/examples/with-firebase/pages/index.vue +41 -0
- package/examples/with-firebase/pages/users/_key.vue +31 -0
- package/examples/with-firebase/plugins/axios.js +5 -0
- package/examples/with-keep-alive/README.md +15 -0
- package/examples/with-keep-alive/layouts/default.vue +3 -0
- package/examples/with-keep-alive/package.json +12 -0
- package/examples/with-keep-alive/pages/about.vue +21 -0
- package/examples/with-keep-alive/pages/index.vue +16 -0
- package/examples/with-museui/README.md +3 -0
- package/examples/with-museui/nuxt.config.js +26 -0
- package/examples/with-museui/package.json +13 -0
- package/examples/with-museui/pages/index.vue +43 -0
- package/examples/with-museui/plugins/museui.js +4 -0
- package/examples/with-purgecss/README.md +6 -0
- package/examples/with-purgecss/assets/css/tailwind.css +57 -0
- package/examples/with-purgecss/layouts/default.vue +14 -0
- package/examples/with-purgecss/nuxt.config.js +44 -0
- package/examples/with-purgecss/package.json +18 -0
- package/examples/with-purgecss/pages/about.vue +21 -0
- package/examples/with-purgecss/pages/index.vue +29 -0
- package/examples/with-purgecss/tailwind.js +744 -0
- package/examples/with-sockets/README.md +12 -0
- package/examples/with-sockets/io/index.js +26 -0
- package/examples/with-sockets/nuxt.config.js +12 -0
- package/examples/with-sockets/package.json +18 -0
- package/examples/with-sockets/pages/index.vue +157 -0
- package/examples/with-sockets/plugins/socket.io.js +4 -0
- package/examples/with-sockets/server.js +36 -0
- package/examples/with-tape/README.md +3 -0
- package/examples/with-tape/package.json +22 -0
- package/examples/with-tape/pages/index.vue +35 -0
- package/examples/with-tape/test/index.test.js +43 -0
- package/examples/with-tape/test/setup.js +14 -0
- package/examples/with-vue-material/README.md +9 -0
- package/examples/with-vue-material/nuxt.config.js +25 -0
- package/examples/with-vue-material/package.json +15 -0
- package/examples/with-vue-material/pages/index.vue +132 -0
- package/examples/with-vue-material/plugins/vue-material.js +4 -0
- package/examples/with-vuetify/README.md +11 -0
- package/examples/with-vuetify/assets/variabales.scss +1 -0
- package/examples/with-vuetify/layouts/default.vue +103 -0
- package/examples/with-vuetify/nuxt.config.js +25 -0
- package/examples/with-vuetify/package.json +16 -0
- package/examples/with-vuetify/pages/about.vue +18 -0
- package/examples/with-vuetify/pages/index.vue +11 -0
- package/examples/with-vuetify/vuetify.options.js +13 -0
- package/examples/with-vuikit/README.md +3 -0
- package/examples/with-vuikit/layouts/default.vue +5 -0
- package/examples/with-vuikit/nuxt.config.js +6 -0
- package/examples/with-vuikit/package.json +15 -0
- package/examples/with-vuikit/pages/index.vue +19 -0
- package/examples/with-vuikit/plugins/vuikit.js +6 -0
- package/examples/with-vux/README.md +3 -0
- package/examples/with-vux/layouts/default.vue +9 -0
- package/examples/with-vux/nuxt.config.js +40 -0
- package/examples/with-vux/package.json +20 -0
- package/examples/with-vux/pages/index.vue +22 -0
- package/examples/with-vux/plugins/vux-components.js +5 -0
- package/examples/with-vux/plugins/vux-plugins.js +12 -0
- package/examples/with-vux/styles/theme.less +1 -0
- package/jest.config.js +61 -0
- package/lerna.json +28 -0
- package/package.json +66 -0
- package/packages/babel-preset-app/README.md +120 -0
- package/packages/babel-preset-app/package.json +33 -0
- package/packages/babel-preset-app/src/index.js +187 -0
- package/packages/babel-preset-app/src/polyfills-plugin.js +37 -0
- package/packages/builder/package.js +7 -0
- package/packages/builder/package.json +30 -0
- package/packages/builder/src/builder.js +795 -0
- package/packages/builder/src/context/build.js +16 -0
- package/packages/builder/src/context/template.js +82 -0
- package/packages/builder/src/ignore.js +59 -0
- package/packages/builder/src/index.js +10 -0
- package/packages/builder/test/__utils__/index.js +24 -0
- package/packages/builder/test/builder.build.test.js +209 -0
- package/packages/builder/test/builder.common.test.js +59 -0
- package/packages/builder/test/builder.ctor.test.js +116 -0
- package/packages/builder/test/builder.generate.test.js +710 -0
- package/packages/builder/test/builder.plugin.test.js +189 -0
- package/packages/builder/test/builder.watch.test.js +435 -0
- package/packages/builder/test/context/__snapshots__/template.test.js.snap +117 -0
- package/packages/builder/test/context/build.test.js +38 -0
- package/packages/builder/test/context/template.test.js +87 -0
- package/packages/builder/test/ignore.test.js +147 -0
- package/packages/builder/test/index.test.js +9 -0
- package/packages/cli/bin/nuxt-cli.js +7 -0
- package/packages/cli/package.js +5 -0
- package/packages/cli/package.json +43 -0
- package/packages/cli/src/command.js +239 -0
- package/packages/cli/src/commands/build.js +92 -0
- package/packages/cli/src/commands/dev.js +116 -0
- package/packages/cli/src/commands/export.js +10 -0
- package/packages/cli/src/commands/generate.js +121 -0
- package/packages/cli/src/commands/help.js +29 -0
- package/packages/cli/src/commands/index.js +17 -0
- package/packages/cli/src/commands/serve.js +10 -0
- package/packages/cli/src/commands/start.js +27 -0
- package/packages/cli/src/commands/webpack.js +116 -0
- package/packages/cli/src/imports.js +18 -0
- package/packages/cli/src/index.js +16 -0
- package/packages/cli/src/list.js +35 -0
- package/packages/cli/src/options/common.js +68 -0
- package/packages/cli/src/options/index.js +9 -0
- package/packages/cli/src/options/locking.js +7 -0
- package/packages/cli/src/options/server.js +29 -0
- package/packages/cli/src/run.js +56 -0
- package/packages/cli/src/setup.js +41 -0
- package/packages/cli/src/utils/banner.js +60 -0
- package/packages/cli/src/utils/config.js +34 -0
- package/packages/cli/src/utils/constants.js +8 -0
- package/packages/cli/src/utils/dependencies.js +35 -0
- package/packages/cli/src/utils/dir.js +11 -0
- package/packages/cli/src/utils/formatting.js +69 -0
- package/packages/cli/src/utils/generate.js +185 -0
- package/packages/cli/src/utils/index.js +64 -0
- package/packages/cli/src/utils/memory.js +18 -0
- package/packages/cli/src/utils/serve.js +78 -0
- package/packages/cli/src/utils/webpack.js +11 -0
- package/packages/cli/test/fixtures/nuxt.async-config.js +9 -0
- package/packages/cli/test/fixtures/nuxt.async-error.js +1 -0
- package/packages/cli/test/fixtures/nuxt.config.js +10 -0
- package/packages/cli/test/fixtures/nuxt.fn-config.js +3 -0
- package/packages/cli/test/unit/__snapshots__/command.test.js.snap +46 -0
- package/packages/cli/test/unit/__snapshots__/webpack.test.js.snap +726 -0
- package/packages/cli/test/unit/build.test.js +148 -0
- package/packages/cli/test/unit/cli.test.js +47 -0
- package/packages/cli/test/unit/command.test.js +173 -0
- package/packages/cli/test/unit/dependencies.test.js +24 -0
- package/packages/cli/test/unit/dev.test.js +141 -0
- package/packages/cli/test/unit/export.test.js +118 -0
- package/packages/cli/test/unit/generate.test.js +162 -0
- package/packages/cli/test/unit/hooks.test.js +52 -0
- package/packages/cli/test/unit/imports.test.js +19 -0
- package/packages/cli/test/unit/list.test.js +57 -0
- package/packages/cli/test/unit/run-edge.test.js +18 -0
- package/packages/cli/test/unit/run.test.js +75 -0
- package/packages/cli/test/unit/serve.test.js +38 -0
- package/packages/cli/test/unit/start.test.js +68 -0
- package/packages/cli/test/unit/utils-minimalcli.test.js +33 -0
- package/packages/cli/test/unit/utils.test.js +273 -0
- package/packages/cli/test/unit/webpack.test.js +50 -0
- package/packages/cli/test/utils/index.js +14 -0
- package/packages/cli/test/utils/mocking.js +121 -0
- package/packages/config/index.d.ts +3 -0
- package/packages/config/package.js +3 -0
- package/packages/config/package.json +26 -0
- package/packages/config/src/config/_app.js +75 -0
- package/packages/config/src/config/_common.js +93 -0
- package/packages/config/src/config/build.js +136 -0
- package/packages/config/src/config/cli.js +4 -0
- package/packages/config/src/config/generate.js +23 -0
- package/packages/config/src/config/index.js +33 -0
- package/packages/config/src/config/messages.js +12 -0
- package/packages/config/src/config/modes.js +20 -0
- package/packages/config/src/config/render.js +45 -0
- package/packages/config/src/config/router.js +18 -0
- package/packages/config/src/config/server.js +14 -0
- package/packages/config/src/index.js +3 -0
- package/packages/config/src/load.js +189 -0
- package/packages/config/src/options.js +529 -0
- package/packages/config/test/__snapshots__/options.test.js.snap +432 -0
- package/packages/config/test/config/__snapshots__/index.test.js.snap +777 -0
- package/packages/config/test/config/_common.test.js +14 -0
- package/packages/config/test/config/build.test.js +32 -0
- package/packages/config/test/config/index.test.js +28 -0
- package/packages/config/test/config/render.test.js +19 -0
- package/packages/config/test/config/server.test.js +45 -0
- package/packages/config/test/fixtures/app.html +0 -0
- package/packages/config/test/fixtures/nuxtrc/.nuxtrc +1 -0
- package/packages/config/test/fixtures/store/index.js +0 -0
- package/packages/config/test/index.test.js +16 -0
- package/packages/config/test/load.test.js +10 -0
- package/packages/config/test/options.test.js +329 -0
- package/packages/core/package.js +3 -0
- package/packages/core/package.json +23 -0
- package/packages/core/src/index.js +5 -0
- package/packages/core/src/load.js +40 -0
- package/packages/core/src/module.js +219 -0
- package/packages/core/src/nuxt.js +125 -0
- package/packages/core/src/resolver.js +165 -0
- package/packages/core/test/__modules__/__resolver__.js +0 -0
- package/packages/core/test/index.test.js +17 -0
- package/packages/core/test/module.test.js +477 -0
- package/packages/core/test/nuxt.test.js +179 -0
- package/packages/core/test/resolver.test.js +424 -0
- package/packages/generator/package.js +3 -0
- package/packages/generator/package.json +24 -0
- package/packages/generator/src/generator.js +443 -0
- package/packages/generator/src/index.js +6 -0
- package/packages/generator/test/__utils__/index.js +27 -0
- package/packages/generator/test/generator.gen.test.js +201 -0
- package/packages/generator/test/generator.init.test.js +234 -0
- package/packages/generator/test/generator.route.test.js +245 -0
- package/packages/generator/test/index.test.js +11 -0
- package/packages/server/package.js +4 -0
- package/packages/server/package.json +32 -0
- package/packages/server/src/context.js +8 -0
- package/packages/server/src/index.js +2 -0
- package/packages/server/src/jsdom.js +75 -0
- package/packages/server/src/listener.js +120 -0
- package/packages/server/src/middleware/error.js +129 -0
- package/packages/server/src/middleware/nuxt.js +156 -0
- package/packages/server/src/middleware/timing.js +56 -0
- package/packages/server/src/server.js +427 -0
- package/packages/server/test/contest.test.js +17 -0
- package/packages/server/test/index.test.js +14 -0
- package/packages/server/test/listener.test.js +428 -0
- package/packages/server/test/middleware/error.test.js +221 -0
- package/packages/server/test/middleware/nuxt.test.js +352 -0
- package/packages/server/test/middleware/timing.test.js +103 -0
- package/packages/server/test/server.test.js +546 -0
- package/packages/types/README.md +8 -0
- package/packages/types/app/index.d.ts +179 -0
- package/packages/types/app/vue.d.ts +44 -0
- package/packages/types/app/vuex.d.ts +10 -0
- package/packages/types/cli/index.d.ts +8 -0
- package/packages/types/config/build.d.ts +185 -0
- package/packages/types/config/cli.d.ts +14 -0
- package/packages/types/config/env.d.ts +6 -0
- package/packages/types/config/features.d.ts +19 -0
- package/packages/types/config/fetch.d.ts +9 -0
- package/packages/types/config/generate.d.ts +28 -0
- package/packages/types/config/globals.d.ts +7 -0
- package/packages/types/config/head.d.ts +9 -0
- package/packages/types/config/hooks.d.ts +53 -0
- package/packages/types/config/index.d.ts +77 -0
- package/packages/types/config/loading.d.ts +27 -0
- package/packages/types/config/module.d.ts +31 -0
- package/packages/types/config/plugin.d.ts +7 -0
- package/packages/types/config/render.d.ts +76 -0
- package/packages/types/config/router.d.ts +27 -0
- package/packages/types/config/runtime.d.ts +15 -0
- package/packages/types/config/server-middleware.d.ts +10 -0
- package/packages/types/config/server.d.ts +15 -0
- package/packages/types/config/vue-configuration.d.ts +9 -0
- package/packages/types/config/watchers.d.ts +14 -0
- package/packages/types/index.d.ts +11 -0
- package/packages/types/index.js +1 -0
- package/packages/types/package.js +3 -0
- package/packages/types/package.json +37 -0
- package/packages/types/process.d.ts +14 -0
- package/packages/types/test/index.ts +2 -0
- package/packages/types/test/process.ts +17 -0
- package/packages/types/test/tsconfig.json +13 -0
- package/packages/types/test/vue.ts +112 -0
- package/packages/utils/package.js +3 -0
- package/packages/utils/package.json +27 -0
- package/packages/utils/src/cjs.js +98 -0
- package/packages/utils/src/constants.js +9 -0
- package/packages/utils/src/context.js +21 -0
- package/packages/utils/src/index.js +11 -0
- package/packages/utils/src/lang.js +40 -0
- package/packages/utils/src/locking.js +102 -0
- package/packages/utils/src/modern.js +61 -0
- package/packages/utils/src/resolve.js +110 -0
- package/packages/utils/src/route.js +280 -0
- package/packages/utils/src/serialize.js +52 -0
- package/packages/utils/src/task.js +40 -0
- package/packages/utils/src/timer.js +65 -0
- package/packages/utils/test/__snapshots__/route.test.js.snap +261 -0
- package/packages/utils/test/cjs.test.js +14 -0
- package/packages/utils/test/context.test.js +24 -0
- package/packages/utils/test/index.test.js +30 -0
- package/packages/utils/test/lang.test.js +55 -0
- package/packages/utils/test/locking.test.js +223 -0
- package/packages/utils/test/modern.test.js +60 -0
- package/packages/utils/test/resolve.posix.test.js +85 -0
- package/packages/utils/test/resolve.win.test.js +90 -0
- package/packages/utils/test/route.test.js +240 -0
- package/packages/utils/test/serialize.test.input.js +41 -0
- package/packages/utils/test/serialize.test.js +69 -0
- package/packages/utils/test/task.test.js +117 -0
- package/packages/utils/test/timer.test.js +165 -0
- package/packages/vue-app/index.d.ts +3 -0
- package/packages/vue-app/package.js +16 -0
- package/packages/vue-app/package.json +31 -0
- package/packages/vue-app/src/index.js +28 -0
- package/packages/vue-app/template/.eslintignore +3 -0
- package/packages/vue-app/template/App.js +347 -0
- package/packages/vue-app/template/client.js +951 -0
- package/packages/vue-app/template/components/nuxt-build-indicator.vue +143 -0
- package/packages/vue-app/template/components/nuxt-child.js +128 -0
- package/packages/vue-app/template/components/nuxt-error.vue +99 -0
- package/packages/vue-app/template/components/nuxt-link.client.js +128 -0
- package/packages/vue-app/template/components/nuxt-link.server.js +17 -0
- package/packages/vue-app/template/components/nuxt-loading.vue +177 -0
- package/packages/vue-app/template/components/nuxt.js +109 -0
- package/packages/vue-app/template/empty.js +1 -0
- package/packages/vue-app/template/index.js +298 -0
- package/packages/vue-app/template/jsonp.js +83 -0
- package/packages/vue-app/template/layouts/default.vue +3 -0
- package/packages/vue-app/template/middleware.js +12 -0
- package/packages/vue-app/template/mixins/fetch.client.js +134 -0
- package/packages/vue-app/template/mixins/fetch.server.js +70 -0
- package/packages/vue-app/template/pages/index.vue +108 -0
- package/packages/vue-app/template/router.js +123 -0
- package/packages/vue-app/template/router.scrollBehavior.js +82 -0
- package/packages/vue-app/template/routes.json +1 -0
- package/packages/vue-app/template/server.js +351 -0
- package/packages/vue-app/template/store.js +158 -0
- package/packages/vue-app/template/utils.js +639 -0
- package/packages/vue-app/template/views/app.template.html +9 -0
- package/packages/vue-app/template/views/error.html +23 -0
- package/packages/vue-app/template/views/loading/chasing-dots.html +67 -0
- package/packages/vue-app/template/views/loading/circle.html +150 -0
- package/packages/vue-app/template/views/loading/cube-grid.html +87 -0
- package/packages/vue-app/template/views/loading/default.html +110 -0
- package/packages/vue-app/template/views/loading/fading-circle.html +164 -0
- package/packages/vue-app/template/views/loading/folding-cube.html +108 -0
- package/packages/vue-app/template/views/loading/nuxt.html +59 -0
- package/packages/vue-app/template/views/loading/pulse.html +48 -0
- package/packages/vue-app/template/views/loading/rectangle-bounce.html +74 -0
- package/packages/vue-app/template/views/loading/rotating-plane.html +44 -0
- package/packages/vue-app/template/views/loading/three-bounce.html +61 -0
- package/packages/vue-app/template/views/loading/wandering-cubes.html +68 -0
- package/packages/vue-app/test/__utils__/index.js +73 -0
- package/packages/vue-app/test/nuxt-link.client.prefetch.test.js +153 -0
- package/packages/vue-app/test/nuxt-loading.test.js +189 -0
- package/packages/vue-app/vetur/nuxt-attributes.json +38 -0
- package/packages/vue-app/vetur/nuxt-tags.json +47 -0
- package/packages/vue-app/web-types/web-types.json +251 -0
- package/packages/vue-renderer/package.js +3 -0
- package/packages/vue-renderer/package.json +26 -0
- package/packages/vue-renderer/src/index.js +1 -0
- package/packages/vue-renderer/src/renderer.js +390 -0
- package/packages/vue-renderer/src/renderers/base.js +25 -0
- package/packages/vue-renderer/src/renderers/modern.js +124 -0
- package/packages/vue-renderer/src/renderers/spa.js +214 -0
- package/packages/vue-renderer/src/renderers/ssr.js +307 -0
- package/packages/webpack/package.js +21 -0
- package/packages/webpack/package.json +60 -0
- package/packages/webpack/src/builder.js +257 -0
- package/packages/webpack/src/config/base.js +538 -0
- package/packages/webpack/src/config/client.js +221 -0
- package/packages/webpack/src/config/index.js +3 -0
- package/packages/webpack/src/config/modern.js +15 -0
- package/packages/webpack/src/config/server.js +147 -0
- package/packages/webpack/src/index.js +1 -0
- package/packages/webpack/src/plugins/vue/client.js +111 -0
- package/packages/webpack/src/plugins/vue/cors.js +25 -0
- package/packages/webpack/src/plugins/vue/modern.js +121 -0
- package/packages/webpack/src/plugins/vue/server.js +71 -0
- package/packages/webpack/src/plugins/vue/util.js +31 -0
- package/packages/webpack/src/plugins/warning-ignore.js +11 -0
- package/packages/webpack/src/utils/async-mfs.js +24 -0
- package/packages/webpack/src/utils/index.js +3 -0
- package/packages/webpack/src/utils/perf-loader.js +66 -0
- package/packages/webpack/src/utils/postcss-v8.js +208 -0
- package/packages/webpack/src/utils/postcss.js +193 -0
- package/packages/webpack/src/utils/reserved-tags.js +23 -0
- package/packages/webpack/src/utils/style-loader.js +157 -0
- package/packages/webpack/test/index.test.js +23 -0
- package/renovate.json +27 -0
- package/scripts/builtins.js +22 -0
- package/scripts/changelog.js +154 -0
- package/scripts/dev.js +39 -0
- package/scripts/link.js +28 -0
- package/scripts/package.js +382 -0
- package/scripts/pkg.js +55 -0
- package/scripts/release-publish +14 -0
- package/scripts/release-version +4 -0
- package/scripts/rollup.config.js +67 -0
- package/scripts/workspace-run +10 -0
- package/test/dev/async-config.size-limit.test.js +45 -0
- package/test/dev/async-config.test.js +21 -0
- package/test/dev/basic.config.defaults.test.js +73 -0
- package/test/dev/basic.dev.test.js +204 -0
- package/test/dev/basic.dynamic.test.js +77 -0
- package/test/dev/basic.fail.generate.test.js +33 -0
- package/test/dev/basic.generate.test.js +286 -0
- package/test/dev/basic.plugins.test.js +51 -0
- package/test/dev/basic.relative.test.js +41 -0
- package/test/dev/basic.ssr.csp.test.js +477 -0
- package/test/dev/basic.ssr.test.js +426 -0
- package/test/dev/children.test.js +56 -0
- package/test/dev/cli.test.js +82 -0
- package/test/dev/custom-app-template.test.js +57 -0
- package/test/dev/custom-dirs.test.js +55 -0
- package/test/dev/dist-options.test.js +35 -0
- package/test/dev/dynamic-routes.test.js +90 -0
- package/test/dev/encoding.test.js +76 -0
- package/test/dev/error.test.js +83 -0
- package/test/dev/express.test.js +42 -0
- package/test/dev/extract-css.test.js +36 -0
- package/test/dev/fallback.test.js +44 -0
- package/test/dev/filenames-query-part.test.js +55 -0
- package/test/dev/full-static.test.js +89 -0
- package/test/dev/generator.test.js +86 -0
- package/test/dev/https.test.js +24 -0
- package/test/dev/modern.client.test.js +53 -0
- package/test/dev/modern.server.test.js +79 -0
- package/test/dev/modern.spa.test.js +75 -0
- package/test/dev/module.test.js +97 -0
- package/test/dev/named-views.test.js +43 -0
- package/test/dev/nuxt.test.js +66 -0
- package/test/dev/renderer.test.js +51 -0
- package/test/dev/route-name-splitter.test.js +20 -0
- package/test/dev/runtime-config.test.js +45 -0
- package/test/dev/server.listen.test.js +79 -0
- package/test/dev/sockets.test.js +16 -0
- package/test/dev/spa.test.js +174 -0
- package/test/dev/ssr.test.js +130 -0
- package/test/dev/trailing-slash-payload.test.js +64 -0
- package/test/dev/trailing-slash.test.js +92 -0
- package/test/dev/with-config.test.js +235 -0
- package/test/dev/wp.config.test.js +42 -0
- package/test/e2e/basic.browser.test.js +338 -0
- package/test/e2e/basic.vue-config.test.js +58 -0
- package/test/e2e/children.patch.browser.test.js +166 -0
- package/test/e2e/error.test.js +71 -0
- package/test/e2e/fetch.browser.test.js +216 -0
- package/test/e2e/page-transitions.browser.test.js +112 -0
- package/test/e2e/spa-base.browser.test.js +71 -0
- package/test/e2e/split-layouts-error.test.js +51 -0
- package/test/fixtures/async-config/async-config.test.js +3 -0
- package/test/fixtures/async-config/nuxt.config.js +15 -0
- package/test/fixtures/async-config/pages/index.vue +3 -0
- package/test/fixtures/basic/assets/app.css +1 -0
- package/test/fixtures/basic/assets/import.css +1 -0
- package/test/fixtures/basic/assets/test.svg +98 -0
- package/test/fixtures/basic/basic.test.js +3 -0
- package/test/fixtures/basic/components/MyComponent.vue +3 -0
- package/test/fixtures/basic/layouts/custom.js +10 -0
- package/test/fixtures/basic/layouts/default.vue +5 -0
- package/test/fixtures/basic/middleware/-ignored.js +3 -0
- package/test/fixtures/basic/middleware/error.js +3 -0
- package/test/fixtures/basic/middleware/ignored.test.js +3 -0
- package/test/fixtures/basic/middleware/meta.js +3 -0
- package/test/fixtures/basic/middleware/redirect.js +3 -0
- package/test/fixtures/basic/nuxt.config.js +104 -0
- package/test/fixtures/basic/pages/-ignored.vue +13 -0
- package/test/fixtures/basic/pages/async-data.vue +13 -0
- package/test/fixtures/basic/pages/await-async-data.vue +18 -0
- package/test/fixtures/basic/pages/callback-async-data.vue +13 -0
- package/test/fixtures/basic/pages/client-only.vue +7 -0
- package/test/fixtures/basic/pages/components.vue +5 -0
- package/test/fixtures/basic/pages/config.vue +29 -0
- package/test/fixtures/basic/pages/css.vue +15 -0
- package/test/fixtures/basic/pages/custom.js +6 -0
- package/test/fixtures/basic/pages/error-midd.vue +13 -0
- package/test/fixtures/basic/pages/error-object.vue +8 -0
- package/test/fixtures/basic/pages/error-string.vue +8 -0
- package/test/fixtures/basic/pages/error.vue +11 -0
- package/test/fixtures/basic/pages/error2.vue +11 -0
- package/test/fixtures/basic/pages/extractCSS.vue +9 -0
- package/test/fixtures/basic/pages/fetch.vue +50 -0
- package/test/fixtures/basic/pages/fn-midd.vue +17 -0
- package/test/fixtures/basic/pages/head.vue +28 -0
- package/test/fixtures/basic/pages/ignored.test.vue +13 -0
- package/test/fixtures/basic/pages/index.vue +6 -0
- package/test/fixtures/basic/pages/js-link.js +2 -0
- package/test/fixtures/basic/pages/js-link.vue +5 -0
- package/test/fixtures/basic/pages/jsx-link.js +5 -0
- package/test/fixtures/basic/pages/jsx-link2.jsx +5 -0
- package/test/fixtures/basic/pages/jsx.js +7 -0
- package/test/fixtures/basic/pages/meta.vue +12 -0
- package/test/fixtures/basic/pages/no-ssr.vue +7 -0
- package/test/fixtures/basic/pages/noloading.vue +27 -0
- package/test/fixtures/basic/pages/postcss.vue +15 -0
- package/test/fixtures/basic/pages/redirect-external-no-slash.vue +11 -0
- package/test/fixtures/basic/pages/redirect-external-root.vue +11 -0
- package/test/fixtures/basic/pages/redirect-external.vue +11 -0
- package/test/fixtures/basic/pages/redirect-middleware.vue +8 -0
- package/test/fixtures/basic/pages/redirect-name.vue +11 -0
- package/test/fixtures/basic/pages/redirect.vue +11 -0
- package/test/fixtures/basic/pages/redirection/_slug.vue +18 -0
- package/test/fixtures/basic/pages/refresh-page-data.vue +15 -0
- package/test/fixtures/basic/pages/router-guard-error.vue +3 -0
- package/test/fixtures/basic/pages/router-guard.vue +11 -0
- package/test/fixtures/basic/pages/scroll-to-top/index.vue +24 -0
- package/test/fixtures/basic/pages/scroll-to-top/scroll-to-top-false.vue +13 -0
- package/test/fixtures/basic/pages/scroll-to-top/scroll-to-top-true.vue +13 -0
- package/test/fixtures/basic/pages/scroll-to-top/watch-query-array.vue +19 -0
- package/test/fixtures/basic/pages/scroll-to-top/watch-query-fn.vue +24 -0
- package/test/fixtures/basic/pages/scroll-to-top/watch-query-true.vue +19 -0
- package/test/fixtures/basic/pages/skip-on-fail/fail.vue +11 -0
- package/test/fixtures/basic/pages/skip-on-fail/success.vue +8 -0
- package/test/fixtures/basic/pages/special-state.vue +15 -0
- package/test/fixtures/basic/pages/stateful.vue +16 -0
- package/test/fixtures/basic/pages/stateless.vue +3 -0
- package/test/fixtures/basic/pages/store-module.vue +11 -0
- package/test/fixtures/basic/pages/store.vue +27 -0
- package/test/fixtures/basic/pages/style.vue +18 -0
- package/test/fixtures/basic/pages/symlink/deep/nested-symlinked.vue +3 -0
- package/test/fixtures/basic/pages/symlink/symlinked.vue +3 -0
- package/test/fixtures/basic/pages/users/_id.vue +12 -0
- package/test/fixtures/basic/pages/validate-async.vue +21 -0
- package/test/fixtures/basic/pages/validate.vue +17 -0
- package/test/fixtures/basic/pages//321/202/320/265/321/201/321/202/351/233/250.vue +3 -0
- package/test/fixtures/basic/pages2/deep/nested-symlinked.vue +3 -0
- package/test/fixtures/basic/pages2/symlinked.vue +3 -0
- package/test/fixtures/basic/plugins/dir-plugin/index.js +3 -0
- package/test/fixtures/basic/plugins/inject.js +17 -0
- package/test/fixtures/basic/plugins/router-guard.js +17 -0
- package/test/fixtures/basic/plugins/tailwind.js +6 -0
- package/test/fixtures/basic/plugins/vuex-module.js +27 -0
- package/test/fixtures/basic/static/body.js +2 -0
- package/test/fixtures/basic/store/-ignored.js +1 -0
- package/test/fixtures/basic/store/bab/index.js +9 -0
- package/test/fixtures/basic/store/foo/bar.js +9 -0
- package/test/fixtures/basic/store/foo/blarg/getters.js +5 -0
- package/test/fixtures/basic/store/foo/blarg/index.js +9 -0
- package/test/fixtures/basic/store/foo/blarg/state.js +3 -0
- package/test/fixtures/basic/store/foo/blarg.js +9 -0
- package/test/fixtures/basic/store/ignored.test.js +1 -0
- package/test/fixtures/basic/store/index.js +13 -0
- package/test/fixtures/children/children.test.js +3 -0
- package/test/fixtures/children/layouts/patch.vue +62 -0
- package/test/fixtures/children/pages/parent/_id.vue +20 -0
- package/test/fixtures/children/pages/parent/child.vue +3 -0
- package/test/fixtures/children/pages/parent/validate-child.vue +11 -0
- package/test/fixtures/children/pages/parent.vue +23 -0
- package/test/fixtures/children/pages/patch/_id/child/_slug.vue +62 -0
- package/test/fixtures/children/pages/patch/_id/child.vue +20 -0
- package/test/fixtures/children/pages/patch/_id/index.vue +3 -0
- package/test/fixtures/children/pages/patch/_id/reuse/_slug.vue +20 -0
- package/test/fixtures/children/pages/patch/_id.vue +20 -0
- package/test/fixtures/children/pages/patch/index.vue +3 -0
- package/test/fixtures/children/pages/patch.vue +21 -0
- package/test/fixtures/cli/cli.build.config.js +17 -0
- package/test/fixtures/cli/cli.build.test.js +20 -0
- package/test/fixtures/cli/cli.gen.config.js +21 -0
- package/test/fixtures/cli/cli.gen.test.js +20 -0
- package/test/fixtures/cli/custom.file +1 -0
- package/test/fixtures/cli/middleware.js +1 -0
- package/test/fixtures/cli/nuxt.config.js +12 -0
- package/test/fixtures/cli/pages/index.vue +3 -0
- package/test/fixtures/config-explicit/config-explicit.test.js +3 -0
- package/test/fixtures/config-explicit/nuxt.config.js +13 -0
- package/test/fixtures/config-explicit/pages/config.vue +29 -0
- package/test/fixtures/custom-app-template/basic.test.js +3 -0
- package/test/fixtures/custom-app-template/nuxt.config.js +6 -0
- package/test/fixtures/custom-app-template/pages/index.vue +3 -0
- package/test/fixtures/custom-app-template/test/mytemplate.html +15 -0
- package/test/fixtures/custom-dirs/custom-assets/app.css +3 -0
- package/test/fixtures/custom-dirs/custom-dirs.test.js +3 -0
- package/test/fixtures/custom-dirs/custom-layouts/layouts/default.vue +6 -0
- package/test/fixtures/custom-dirs/custom-middleware/user-agent.js +3 -0
- package/test/fixtures/custom-dirs/custom-pages/index.vue +5 -0
- package/test/fixtures/custom-dirs/custom-pages/user-agent.vue +12 -0
- package/test/fixtures/custom-dirs/custom-static/test.txt +1 -0
- package/test/fixtures/custom-dirs/custom-store/index.js +17 -0
- package/test/fixtures/custom-dirs/nuxt.config.js +31 -0
- package/test/fixtures/dynamic-routes/dynamic-routes.test.js +3 -0
- package/test/fixtures/dynamic-routes/pages/_/_.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/_/index.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/_/p/_.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/_key/_id.vue +3 -0
- package/test/fixtures/dynamic-routes/pages/_slug.vue +3 -0
- package/test/fixtures/dynamic-routes/pages/index.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/parent/child.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/parent/index.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/parent/teub.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/parent.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/posts/_id.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/posts.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/test/_.vue +3 -0
- package/test/fixtures/dynamic-routes/pages/test/index.vue +3 -0
- package/test/fixtures/dynamic-routes/pages/test/projects/_category.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/test/projects/index.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/test/songs/_id.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/test/songs/toto.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/test/users/_id.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/test/users/_index/teub.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/test/users/index.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/test/users/projects/_category.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/test/users/projects/index.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/test/users.vue +0 -0
- package/test/fixtures/dynamic-routes/pages/users/_id.vue +0 -0
- package/test/fixtures/empty/empty.test.js +3 -0
- package/test/fixtures/empty/pages/.gitkeep +0 -0
- package/test/fixtures/encoding/encoding.test.js +3 -0
- package/test/fixtures/encoding/layouts/default.vue +51 -0
- package/test/fixtures/encoding/nuxt.config.js +12 -0
- package/test/fixtures/encoding/pages/@about.vue +5 -0
- package/test/fixtures/encoding/pages/dynamic/_id.vue +17 -0
- package/test/fixtures/encoding/pages/index.vue +5 -0
- package/test/fixtures/encoding/pages/redirect.vue +13 -0
- package/test/fixtures/encoding/pages//321/202/320/265/321/201/321/202.vue +3 -0
- package/test/fixtures/error/error.test.js +3 -0
- package/test/fixtures/error/layouts/error-layout.vue +12 -0
- package/test/fixtures/error/layouts/error.vue +18 -0
- package/test/fixtures/error/pages/about.vue +24 -0
- package/test/fixtures/error/pages/error.vue +10 -0
- package/test/fixtures/error/pages/index.vue +14 -0
- package/test/fixtures/error/pages/info.vue +19 -0
- package/test/fixtures/extract-css/assets/global.css +15 -0
- package/test/fixtures/extract-css/extract-css.test.js +3 -0
- package/test/fixtures/extract-css/layouts/default.vue +15 -0
- package/test/fixtures/extract-css/nuxt.config.js +25 -0
- package/test/fixtures/extract-css/pages/about.vue +13 -0
- package/test/fixtures/extract-css/pages/index.vue +36 -0
- package/test/fixtures/fetch/components/Team.vue +27 -0
- package/test/fixtures/fetch/fetch.test.js +3 -0
- package/test/fixtures/fetch/layouts/default.vue +80 -0
- package/test/fixtures/fetch/nuxt.config.js +1 -0
- package/test/fixtures/fetch/pages/fetch-button.vue +26 -0
- package/test/fixtures/fetch/pages/fetch-client.vue +22 -0
- package/test/fixtures/fetch/pages/fetch-component.vue +13 -0
- package/test/fixtures/fetch/pages/fetch-conditional.vue +29 -0
- package/test/fixtures/fetch/pages/fetch-deep.vue +35 -0
- package/test/fixtures/fetch/pages/fetch-delay.vue +24 -0
- package/test/fixtures/fetch/pages/fetch-error.vue +24 -0
- package/test/fixtures/fetch/pages/fetch-root.vue +21 -0
- package/test/fixtures/fetch/pages/index.vue +23 -0
- package/test/fixtures/fetch/pages/nested/_slug.vue +13 -0
- package/test/fixtures/fetch/pages/nested/index.vue +26 -0
- package/test/fixtures/fetch/pages/nested.vue +22 -0
- package/test/fixtures/fetch/pages/old-fetch.vue +18 -0
- package/test/fixtures/fetch/static/team.json +11 -0
- package/test/fixtures/fetch/store/index.js +9 -0
- package/test/fixtures/filenames-query-part/filenames-query-part.test.js +3 -0
- package/test/fixtures/filenames-query-part/nuxt.config.js +8 -0
- package/test/fixtures/filenames-query-part/pages/index.vue +5 -0
- package/test/fixtures/full-static/full-static.test.js +3 -0
- package/test/fixtures/full-static/layouts/default.vue +40 -0
- package/test/fixtures/full-static/nuxt.config.js +30 -0
- package/test/fixtures/full-static/pages/dynamic/_name.vue +10 -0
- package/test/fixtures/full-static/pages/encoding//344/270/255/346/226/207.vue +5 -0
- package/test/fixtures/full-static/pages/index.vue +5 -0
- package/test/fixtures/full-static/pages/pagination/_i.vue +21 -0
- package/test/fixtures/full-static/pages/payload.vue +13 -0
- package/test/fixtures/full-static/pages/store.vue +18 -0
- package/test/fixtures/full-static/store/auth.js +17 -0
- package/test/fixtures/full-static/store/index.js +9 -0
- package/test/fixtures/https/https.test.js +3 -0
- package/test/fixtures/https/nuxt.config.js +11 -0
- package/test/fixtures/https/pages/index.vue +3 -0
- package/test/fixtures/https/server.crt +19 -0
- package/test/fixtures/https/server.key +15 -0
- package/test/fixtures/missing-pages-dir/missing-pages-dir.test.js +10 -0
- package/test/fixtures/missing-plugin/nuxt.config.js +3 -0
- package/test/fixtures/missing-style-resource/nuxt.config.js +7 -0
- package/test/fixtures/modern/modern.test.js +3 -0
- package/test/fixtures/modern/nuxt.config.js +16 -0
- package/test/fixtures/modern/pages/index.vue +18 -0
- package/test/fixtures/module/layouts/layout.vue +6 -0
- package/test/fixtures/module/module.test.js +3 -0
- package/test/fixtures/module/modules/basic/index.js +30 -0
- package/test/fixtures/module/modules/basic/layout.vue +6 -0
- package/test/fixtures/module/modules/basic/reverse.js +14 -0
- package/test/fixtures/module/modules/empty/index.js +7 -0
- package/test/fixtures/module/modules/hooks/index.js +28 -0
- package/test/fixtures/module/modules/layout/index.js +6 -0
- package/test/fixtures/module/modules/layout/some-error.vue +3 -0
- package/test/fixtures/module/modules/middleware/index.js +21 -0
- package/test/fixtures/module/modules/middleware/log.js +5 -0
- package/test/fixtures/module/modules/middleware/midd1.js +4 -0
- package/test/fixtures/module/modules/middleware/midd2.js +4 -0
- package/test/fixtures/module/modules/middleware/midd3.js +7 -0
- package/test/fixtures/module/modules/middleware/use-middleware.js +3 -0
- package/test/fixtures/module/modules/template/index.js +12 -0
- package/test/fixtures/module/nuxt.config.js +34 -0
- package/test/fixtures/module/router.js +31 -0
- package/test/fixtures/module/views/about.vue +8 -0
- package/test/fixtures/module/views/index.vue +8 -0
- package/test/fixtures/module/views/layout.vue +10 -0
- package/test/fixtures/named-views/components/childLeft.vue +13 -0
- package/test/fixtures/named-views/components/mainTop.vue +13 -0
- package/test/fixtures/named-views/layouts/default.vue +6 -0
- package/test/fixtures/named-views/named-views.test.js +3 -0
- package/test/fixtures/named-views/nuxt.config.js +32 -0
- package/test/fixtures/named-views/pages/another.vue +6 -0
- package/test/fixtures/named-views/pages/index/child/_id/index.vue +21 -0
- package/test/fixtures/named-views/pages/index/section.vue +13 -0
- package/test/fixtures/named-views/pages/index.vue +16 -0
- package/test/fixtures/named-views/pages/main.vue +16 -0
- package/test/fixtures/page-transitions/layouts/default.vue +6 -0
- package/test/fixtures/page-transitions/page-transitions.test.js +3 -0
- package/test/fixtures/page-transitions/pages/callbacks/child.vue +11 -0
- package/test/fixtures/page-transitions/pages/callbacks.vue +12 -0
- package/test/fixtures/page-transitions/pages/index.vue +11 -0
- package/test/fixtures/page-transitions/pages/transition-properties/child.vue +18 -0
- package/test/fixtures/page-transitions/pages/transition-properties.vue +18 -0
- package/test/fixtures/page-transitions/utils/transition-properties.js +34 -0
- package/test/fixtures/route-name-splitter/nuxt.config.js +5 -0
- package/test/fixtures/route-name-splitter/pages/_/_.vue +0 -0
- package/test/fixtures/route-name-splitter/pages/_/index.vue +0 -0
- package/test/fixtures/route-name-splitter/pages/_/p/_.vue +0 -0
- package/test/fixtures/route-name-splitter/pages/index.vue +0 -0
- package/test/fixtures/route-name-splitter/pages/parent/child.vue +0 -0
- package/test/fixtures/route-name-splitter/pages/parent/index.vue +0 -0
- package/test/fixtures/route-name-splitter/pages/posts/_id.vue +0 -0
- package/test/fixtures/route-name-splitter/pages/posts.vue +0 -0
- package/test/fixtures/route-name-splitter/route-name-splitter.test.js +3 -0
- package/test/fixtures/runtime-config/.env +8 -0
- package/test/fixtures/runtime-config/nuxt.config.js +27 -0
- package/test/fixtures/runtime-config/pages/index.vue +30 -0
- package/test/fixtures/runtime-config/runtime-config.test.js +3 -0
- package/test/fixtures/shared-chunk/components/lazy.vue +13 -0
- package/test/fixtures/shared-chunk/components/shared-vendor.vue +9 -0
- package/test/fixtures/shared-chunk/components/shared.vue +5 -0
- package/test/fixtures/shared-chunk/nuxt.config.js +3 -0
- package/test/fixtures/shared-chunk/pages/_cat/_id/_sub.vue +6 -0
- package/test/fixtures/shared-chunk/pages/index.vue +14 -0
- package/test/fixtures/shared-chunk/pages/product/_identifier.vue +6 -0
- package/test/fixtures/sockets/nuxt.config.js +7 -0
- package/test/fixtures/sockets/pages/index.vue +3 -0
- package/test/fixtures/sockets/sockets.test.js +5 -0
- package/test/fixtures/spa/layouts/custom.vue +7 -0
- package/test/fixtures/spa/layouts/default.vue +7 -0
- package/test/fixtures/spa/middleware/middleware.js +14 -0
- package/test/fixtures/spa/nuxt.config.js +37 -0
- package/test/fixtures/spa/pages/async.vue +20 -0
- package/test/fixtures/spa/pages/custom.vue +15 -0
- package/test/fixtures/spa/pages/error-handler-async.vue +9 -0
- package/test/fixtures/spa/pages/error-handler-object.vue +8 -0
- package/test/fixtures/spa/pages/error-handler-string.vue +8 -0
- package/test/fixtures/spa/pages/error-handler.vue +8 -0
- package/test/fixtures/spa/pages/index.vue +12 -0
- package/test/fixtures/spa/pages/mounted.vue +20 -0
- package/test/fixtures/spa/pages/redirect-done.vue +17 -0
- package/test/fixtures/spa/pages/route-path.vue +3 -0
- package/test/fixtures/spa/pages//321/202/320/265/321/201/321/202/351/233/250.vue +11 -0
- package/test/fixtures/spa/plugins/error.js +5 -0
- package/test/fixtures/spa/plugins/path.js +4 -0
- package/test/fixtures/spa/spa.test.js +7 -0
- package/test/fixtures/spa-base/nuxt.config.js +13 -0
- package/test/fixtures/spa-hash/nuxt.config.js +13 -0
- package/test/fixtures/split-layouts-error/layouts/error-layout.vue +12 -0
- package/test/fixtures/split-layouts-error/layouts/error.vue +18 -0
- package/test/fixtures/split-layouts-error/nuxt.config.js +7 -0
- package/test/fixtures/split-layouts-error/pages/about.vue +8 -0
- package/test/fixtures/split-layouts-error/pages/error.vue +12 -0
- package/test/fixtures/split-layouts-error/pages/index.vue +14 -0
- package/test/fixtures/split-layouts-error/pages/info.vue +24 -0
- package/test/fixtures/split-layouts-error/split-layouts-error.test.js +3 -0
- package/test/fixtures/ssr/components/test.vue +15 -0
- package/test/fixtures/ssr/lib/db.js +4 -0
- package/test/fixtures/ssr/nuxt.config.js +8 -0
- package/test/fixtures/ssr/pages/asyncComponent.vue +15 -0
- package/test/fixtures/ssr/pages/asyncData.vue +15 -0
- package/test/fixtures/ssr/pages/component.vue +15 -0
- package/test/fixtures/ssr/pages/context/_id.vue +6 -0
- package/test/fixtures/ssr/pages/context.vue +10 -0
- package/test/fixtures/ssr/pages/data.vue +15 -0
- package/test/fixtures/ssr/pages/fetch.vue +14 -0
- package/test/fixtures/ssr/pages/store.vue +3 -0
- package/test/fixtures/ssr/ssr.test.js +3 -0
- package/test/fixtures/ssr/store/index.js +23 -0
- package/test/fixtures/trailing-slash/pages/index.vue +5 -0
- package/test/fixtures/trailing-slash/pages/posts/_slug.vue +16 -0
- package/test/fixtures/trailing-slash/pages/posts/index.vue +5 -0
- package/test/fixtures/trailing-slash/pages/posts.vue +6 -0
- package/test/fixtures/trailing-slash/trailing-slash.test.js +5 -0
- package/test/fixtures/trailing-slash/with-default/nuxt.config.js +10 -0
- package/test/fixtures/trailing-slash/with-false/nuxt.config.js +10 -0
- package/test/fixtures/trailing-slash/with-true/nuxt.config.js +10 -0
- package/test/fixtures/with-config/.nuxtignore +4 -0
- package/test/fixtures/with-config/app.html +10 -0
- package/test/fixtures/with-config/assets/app.pcss +10 -0
- package/test/fixtures/with-config/assets/app.sass +2 -0
- package/test/fixtures/with-config/assets/pre-process.css +3 -0
- package/test/fixtures/with-config/assets/roboto.woff2 +0 -0
- package/test/fixtures/with-config/components/loading.vue +36 -0
- package/test/fixtures/with-config/layouts/custom-env.vue +6 -0
- package/test/fixtures/with-config/layouts/custom.vue +6 -0
- package/test/fixtures/with-config/layouts/default.vue +6 -0
- package/test/fixtures/with-config/layouts/desktop/default.vue +6 -0
- package/test/fixtures/with-config/layouts/error.vue +9 -0
- package/test/fixtures/with-config/layouts/mobile/default.vue +6 -0
- package/test/fixtures/with-config/layouts/test-ignore.vue +1 -0
- package/test/fixtures/with-config/middleware/noop.js +3 -0
- package/test/fixtures/with-config/middleware/test-ignore.js +1 -0
- package/test/fixtures/with-config/middleware/user-agent.js +3 -0
- package/test/fixtures/with-config/nuxt.config.js +118 -0
- package/test/fixtures/with-config/pages/about.vue +18 -0
- package/test/fixtures/with-config/pages/desktop.vue +11 -0
- package/test/fixtures/with-config/pages/env.vue +23 -0
- package/test/fixtures/with-config/pages/error.vue +11 -0
- package/test/fixtures/with-config/pages/head.vue +13 -0
- package/test/fixtures/with-config/pages/index.vue +21 -0
- package/test/fixtures/with-config/pages/mobile.vue +11 -0
- package/test/fixtures/with-config/pages/test-ignore.vue +0 -0
- package/test/fixtures/with-config/pages/user-agent.vue +12 -0
- package/test/fixtures/with-config/plugins/doubled/index.js +1 -0
- package/test/fixtures/with-config/plugins/only-client.js +1 -0
- package/test/fixtures/with-config/plugins/test.client.js +1 -0
- package/test/fixtures/with-config/plugins/test.js +7 -0
- package/test/fixtures/with-config/plugins/test.json +0 -0
- package/test/fixtures/with-config/plugins/test.plugin.js +5 -0
- package/test/fixtures/with-config/plugins/test.server.js +1 -0
- package/test/fixtures/with-config/postcss.config.js +14 -0
- package/test/fixtures/with-config/static/test.txt +1 -0
- package/test/fixtures/with-config/store/index.js +17 -0
- package/test/fixtures/with-config/store/test-ignore.js +1 -0
- package/test/fixtures/with-config/with-config.test.js +38 -0
- package/test/utils/browser.js +110 -0
- package/test/utils/build.js +21 -0
- package/test/utils/index.js +30 -0
- package/test/utils/nuxt.js +35 -0
- package/test/utils/resource-size.js +35 -0
- package/test/utils/setup-env.js +35 -0
- package/test/utils/setup.js +6 -0
@@ -0,0 +1,795 @@
|
|
1
|
+
import path from 'path'
|
2
|
+
import chalk from 'chalk'
|
3
|
+
import chokidar from 'chokidar'
|
4
|
+
import consola from 'consola'
|
5
|
+
import fsExtra from 'fs-extra'
|
6
|
+
import Glob from 'glob'
|
7
|
+
import hash from 'hash-sum'
|
8
|
+
import pify from 'pify'
|
9
|
+
import upath from 'upath'
|
10
|
+
import { debounce, omit, template, uniq, uniqBy } from 'lodash'
|
11
|
+
import {
|
12
|
+
r,
|
13
|
+
createRoutes,
|
14
|
+
relativeTo,
|
15
|
+
waitFor,
|
16
|
+
determineGlobals,
|
17
|
+
stripWhitespace,
|
18
|
+
isIndexFileAndFolder,
|
19
|
+
scanRequireTree,
|
20
|
+
TARGETS
|
21
|
+
} from '@nuxt/utils'
|
22
|
+
|
23
|
+
import { template as VueAppTemplate } from '@nuxt/vue-app'
|
24
|
+
import { BundleBuilder as WebpackBuilder } from '@nuxt/webpack'
|
25
|
+
|
26
|
+
import Ignore from './ignore'
|
27
|
+
import BuildContext from './context/build'
|
28
|
+
import TemplateContext from './context/template'
|
29
|
+
|
30
|
+
const glob = pify(Glob)
|
31
|
+
export default class Builder {
|
32
|
+
constructor (nuxt, bundleBuilder) {
|
33
|
+
this.nuxt = nuxt
|
34
|
+
this.plugins = []
|
35
|
+
this.options = nuxt.options
|
36
|
+
this.globals = determineGlobals(nuxt.options.globalName, nuxt.options.globals)
|
37
|
+
this.watchers = {
|
38
|
+
files: null,
|
39
|
+
custom: null,
|
40
|
+
restart: null
|
41
|
+
}
|
42
|
+
|
43
|
+
this.supportedExtensions = ['vue', 'js', ...(this.options.build.additionalExtensions || [])]
|
44
|
+
|
45
|
+
// Helper to resolve build paths
|
46
|
+
this.relativeToBuild = (...args) => relativeTo(this.options.buildDir, ...args)
|
47
|
+
|
48
|
+
this._buildStatus = STATUS.INITIAL
|
49
|
+
|
50
|
+
// Hooks for watch lifecycle
|
51
|
+
if (this.options.dev) {
|
52
|
+
// Start watching after initial render
|
53
|
+
this.nuxt.hook('build:done', () => {
|
54
|
+
consola.info('Waiting for file changes')
|
55
|
+
this.watchClient()
|
56
|
+
this.watchRestart()
|
57
|
+
})
|
58
|
+
|
59
|
+
// Enable HMR for serverMiddleware
|
60
|
+
this.serverMiddlewareHMR()
|
61
|
+
|
62
|
+
// Close hook
|
63
|
+
this.nuxt.hook('close', () => this.close())
|
64
|
+
}
|
65
|
+
|
66
|
+
if (this.options.build.analyze) {
|
67
|
+
this.nuxt.hook('build:done', () => {
|
68
|
+
consola.warn('Notice: Please do not deploy bundles built with "analyze" mode, they\'re for analysis purposes only.')
|
69
|
+
})
|
70
|
+
}
|
71
|
+
|
72
|
+
// Resolve template
|
73
|
+
this.template = this.options.build.template || VueAppTemplate
|
74
|
+
if (typeof this.template === 'string') {
|
75
|
+
this.template = this.nuxt.resolver.requireModule(this.template).template
|
76
|
+
}
|
77
|
+
|
78
|
+
// Create a new bundle builder
|
79
|
+
this.bundleBuilder = this.getBundleBuilder(bundleBuilder)
|
80
|
+
|
81
|
+
this.ignore = new Ignore({
|
82
|
+
rootDir: this.options.srcDir,
|
83
|
+
ignoreArray: this.options.ignore
|
84
|
+
})
|
85
|
+
}
|
86
|
+
|
87
|
+
getBundleBuilder (BundleBuilder) {
|
88
|
+
if (typeof BundleBuilder === 'object') {
|
89
|
+
return BundleBuilder
|
90
|
+
}
|
91
|
+
|
92
|
+
const context = new BuildContext(this)
|
93
|
+
|
94
|
+
if (typeof BundleBuilder !== 'function') {
|
95
|
+
BundleBuilder = WebpackBuilder
|
96
|
+
}
|
97
|
+
|
98
|
+
return new BundleBuilder(context)
|
99
|
+
}
|
100
|
+
|
101
|
+
forGenerate () {
|
102
|
+
this.options.target = TARGETS.static
|
103
|
+
this.bundleBuilder.forGenerate()
|
104
|
+
}
|
105
|
+
|
106
|
+
async build () {
|
107
|
+
// Avoid calling build() method multiple times when dev:true
|
108
|
+
if (this._buildStatus === STATUS.BUILD_DONE && this.options.dev) {
|
109
|
+
return this
|
110
|
+
}
|
111
|
+
// If building
|
112
|
+
if (this._buildStatus === STATUS.BUILDING) {
|
113
|
+
await waitFor(1000)
|
114
|
+
return this.build()
|
115
|
+
}
|
116
|
+
this._buildStatus = STATUS.BUILDING
|
117
|
+
|
118
|
+
if (this.options.dev) {
|
119
|
+
consola.info('Preparing project for development')
|
120
|
+
consola.info('Initial build may take a while')
|
121
|
+
} else {
|
122
|
+
consola.info('Production build')
|
123
|
+
if (this.options.render.ssr) {
|
124
|
+
consola.info(`Bundling for ${chalk.bold.yellow('server')} and ${chalk.bold.green('client')} side`)
|
125
|
+
} else {
|
126
|
+
consola.info(`Bundling only for ${chalk.bold.green('client')} side`)
|
127
|
+
}
|
128
|
+
consola.info(`Target: ${chalk.bold.cyan(this.options.target)}`)
|
129
|
+
}
|
130
|
+
|
131
|
+
// Wait for nuxt ready
|
132
|
+
await this.nuxt.ready()
|
133
|
+
|
134
|
+
// Call before hook
|
135
|
+
await this.nuxt.callHook('build:before', this, this.options.build)
|
136
|
+
|
137
|
+
await this.validatePages()
|
138
|
+
|
139
|
+
consola.success('Builder initialized')
|
140
|
+
|
141
|
+
consola.debug(`App root: ${this.options.srcDir}`)
|
142
|
+
|
143
|
+
// Create or empty .nuxt/, .nuxt/components and .nuxt/dist folders
|
144
|
+
await fsExtra.emptyDir(r(this.options.buildDir))
|
145
|
+
const buildDirs = [r(this.options.buildDir, 'components')]
|
146
|
+
if (!this.options.dev) {
|
147
|
+
buildDirs.push(
|
148
|
+
r(this.options.buildDir, 'dist', 'client'),
|
149
|
+
r(this.options.buildDir, 'dist', 'server')
|
150
|
+
)
|
151
|
+
}
|
152
|
+
await Promise.all(buildDirs.map(dir => fsExtra.emptyDir(dir)))
|
153
|
+
|
154
|
+
// Call ready hook
|
155
|
+
await this.nuxt.callHook('builder:prepared', this, this.options.build)
|
156
|
+
|
157
|
+
// Generate routes and interpret the template files
|
158
|
+
await this.generateRoutesAndFiles()
|
159
|
+
|
160
|
+
// Add vue-app template dir to watchers
|
161
|
+
this.options.build.watch.push(this.globPathWithExtensions(this.template.dir))
|
162
|
+
|
163
|
+
await this.resolvePlugins()
|
164
|
+
|
165
|
+
// Start bundle build: webpack, rollup, parcel...
|
166
|
+
await this.bundleBuilder.build()
|
167
|
+
|
168
|
+
// Flag to set that building is done
|
169
|
+
this._buildStatus = STATUS.BUILD_DONE
|
170
|
+
|
171
|
+
// Call done hook
|
172
|
+
await this.nuxt.callHook('build:done', this)
|
173
|
+
|
174
|
+
return this
|
175
|
+
}
|
176
|
+
|
177
|
+
// Check if pages dir exists and warn if not
|
178
|
+
async validatePages () {
|
179
|
+
this._nuxtPages = typeof this.options.build.createRoutes !== 'function'
|
180
|
+
|
181
|
+
if (
|
182
|
+
!this._nuxtPages ||
|
183
|
+
await fsExtra.exists(path.resolve(this.options.srcDir, this.options.dir.pages))
|
184
|
+
) {
|
185
|
+
return
|
186
|
+
}
|
187
|
+
|
188
|
+
const dir = this.options.srcDir
|
189
|
+
if (await fsExtra.exists(path.join(this.options.srcDir, '..', this.options.dir.pages))) {
|
190
|
+
throw new Error(
|
191
|
+
`No \`${this.options.dir.pages}\` directory found in ${dir}. Did you mean to run \`nuxt\` in the parent (\`../\`) directory?`
|
192
|
+
)
|
193
|
+
}
|
194
|
+
|
195
|
+
this._defaultPage = true
|
196
|
+
consola.warn(`No \`${this.options.dir.pages}\` directory found in ${dir}. Using the default built-in page.`)
|
197
|
+
}
|
198
|
+
|
199
|
+
globPathWithExtensions (path) {
|
200
|
+
return `${path}/**/*.{${this.supportedExtensions.join(',')}}`
|
201
|
+
}
|
202
|
+
|
203
|
+
createTemplateContext () {
|
204
|
+
return new TemplateContext(this, this.options)
|
205
|
+
}
|
206
|
+
|
207
|
+
async generateRoutesAndFiles () {
|
208
|
+
consola.debug('Generating nuxt files')
|
209
|
+
|
210
|
+
this.plugins = Array.from(await this.normalizePlugins())
|
211
|
+
|
212
|
+
const templateContext = this.createTemplateContext()
|
213
|
+
|
214
|
+
await Promise.all([
|
215
|
+
this.resolveLayouts(templateContext),
|
216
|
+
this.resolveRoutes(templateContext),
|
217
|
+
this.resolveStore(templateContext),
|
218
|
+
this.resolveMiddleware(templateContext)
|
219
|
+
])
|
220
|
+
|
221
|
+
this.addOptionalTemplates(templateContext)
|
222
|
+
|
223
|
+
await this.resolveCustomTemplates(templateContext)
|
224
|
+
|
225
|
+
await this.resolveLoadingIndicator(templateContext)
|
226
|
+
|
227
|
+
await this.compileTemplates(templateContext)
|
228
|
+
|
229
|
+
consola.success('Nuxt files generated')
|
230
|
+
}
|
231
|
+
|
232
|
+
async normalizePlugins () {
|
233
|
+
// options.extendPlugins allows for returning a new plugins array
|
234
|
+
if (typeof this.options.extendPlugins === 'function') {
|
235
|
+
const extendedPlugins = this.options.extendPlugins(this.options.plugins)
|
236
|
+
|
237
|
+
if (Array.isArray(extendedPlugins)) {
|
238
|
+
this.options.plugins = extendedPlugins
|
239
|
+
}
|
240
|
+
}
|
241
|
+
|
242
|
+
// extendPlugins hook only supports in-place modifying
|
243
|
+
await this.nuxt.callHook('builder:extendPlugins', this.options.plugins)
|
244
|
+
|
245
|
+
const modes = ['client', 'server']
|
246
|
+
const modePattern = new RegExp(`\\.(${modes.join('|')})(\\.\\w+)*$`)
|
247
|
+
return uniqBy(
|
248
|
+
this.options.plugins.map((p) => {
|
249
|
+
if (typeof p === 'string') {
|
250
|
+
p = { src: p }
|
251
|
+
}
|
252
|
+
const pluginBaseName = path.basename(p.src, path.extname(p.src)).replace(
|
253
|
+
/[^a-zA-Z?\d\s:]/g,
|
254
|
+
''
|
255
|
+
)
|
256
|
+
|
257
|
+
if (p.ssr === false) {
|
258
|
+
p.mode = 'client'
|
259
|
+
} else if (p.mode === undefined) {
|
260
|
+
p.mode = 'all'
|
261
|
+
p.src.replace(modePattern, (_, mode) => {
|
262
|
+
if (modes.includes(mode)) {
|
263
|
+
p.mode = mode
|
264
|
+
}
|
265
|
+
})
|
266
|
+
} else if (!['client', 'server', 'all'].includes(p.mode)) {
|
267
|
+
consola.warn(`Invalid plugin mode (server/client/all): '${p.mode}'. Falling back to 'all'`)
|
268
|
+
p.mode = 'all'
|
269
|
+
}
|
270
|
+
|
271
|
+
return {
|
272
|
+
src: this.nuxt.resolver.resolveAlias(p.src),
|
273
|
+
mode: p.mode,
|
274
|
+
name: 'nuxt_plugin_' + pluginBaseName + '_' + hash(p.src)
|
275
|
+
}
|
276
|
+
}),
|
277
|
+
p => p.name
|
278
|
+
)
|
279
|
+
}
|
280
|
+
|
281
|
+
addOptionalTemplates (templateContext) {
|
282
|
+
if (this.options.build.indicator) {
|
283
|
+
templateContext.templateFiles.push('components/nuxt-build-indicator.vue')
|
284
|
+
}
|
285
|
+
|
286
|
+
if (this.options.loading !== false) {
|
287
|
+
templateContext.templateFiles.push('components/nuxt-loading.vue')
|
288
|
+
}
|
289
|
+
}
|
290
|
+
|
291
|
+
async resolveFiles (dir, cwd = this.options.srcDir) {
|
292
|
+
return this.ignore.filter(await glob(this.globPathWithExtensions(dir), {
|
293
|
+
cwd,
|
294
|
+
follow: this.options.build.followSymlinks
|
295
|
+
}))
|
296
|
+
}
|
297
|
+
|
298
|
+
async resolveRelative (dir) {
|
299
|
+
const dirPrefix = new RegExp(`^${dir}/`)
|
300
|
+
return (await this.resolveFiles(dir)).map(file => ({ src: file.replace(dirPrefix, '') }))
|
301
|
+
}
|
302
|
+
|
303
|
+
async resolveLayouts ({ templateVars, templateFiles }) {
|
304
|
+
if (!this.options.features.layouts) {
|
305
|
+
return
|
306
|
+
}
|
307
|
+
|
308
|
+
if (await fsExtra.exists(path.resolve(this.options.srcDir, this.options.dir.layouts))) {
|
309
|
+
for (const file of await this.resolveFiles(this.options.dir.layouts)) {
|
310
|
+
const name = file
|
311
|
+
.replace(new RegExp(`^${this.options.dir.layouts}/`), '')
|
312
|
+
.replace(new RegExp(`\\.(${this.supportedExtensions.join('|')})$`), '')
|
313
|
+
|
314
|
+
// Layout Priority: module.addLayout > .vue file > other extensions
|
315
|
+
if (name === 'error') {
|
316
|
+
if (!templateVars.components.ErrorPage) {
|
317
|
+
templateVars.components.ErrorPage = this.relativeToBuild(
|
318
|
+
this.options.srcDir,
|
319
|
+
file
|
320
|
+
)
|
321
|
+
}
|
322
|
+
} else if (this.options.layouts[name]) {
|
323
|
+
consola.warn(`Duplicate layout registration, "${name}" has been registered as "${this.options.layouts[name]}"`)
|
324
|
+
} else if (!templateVars.layouts[name] || /\.vue$/.test(file)) {
|
325
|
+
templateVars.layouts[name] = this.relativeToBuild(
|
326
|
+
this.options.srcDir,
|
327
|
+
file
|
328
|
+
)
|
329
|
+
}
|
330
|
+
}
|
331
|
+
}
|
332
|
+
|
333
|
+
// If no default layout, create its folder and add the default folder
|
334
|
+
if (!templateVars.layouts.default) {
|
335
|
+
await fsExtra.mkdirp(r(this.options.buildDir, 'layouts'))
|
336
|
+
templateFiles.push('layouts/default.vue')
|
337
|
+
templateVars.layouts.default = './layouts/default.vue'
|
338
|
+
}
|
339
|
+
}
|
340
|
+
|
341
|
+
async resolveRoutes ({ templateVars }) {
|
342
|
+
consola.debug('Generating routes...')
|
343
|
+
const { routeNameSplitter, trailingSlash } = this.options.router
|
344
|
+
|
345
|
+
if (this._defaultPage) {
|
346
|
+
templateVars.router.routes = createRoutes({
|
347
|
+
files: ['index.vue'],
|
348
|
+
srcDir: this.template.dir + '/pages',
|
349
|
+
routeNameSplitter,
|
350
|
+
trailingSlash
|
351
|
+
})
|
352
|
+
} else if (this._nuxtPages) {
|
353
|
+
// Use nuxt createRoutes bases on pages/
|
354
|
+
const files = {}
|
355
|
+
const ext = new RegExp(`\\.(${this.supportedExtensions.join('|')})$`)
|
356
|
+
for (const page of await this.resolveFiles(this.options.dir.pages)) {
|
357
|
+
const key = page.replace(ext, '')
|
358
|
+
// .vue file takes precedence over other extensions
|
359
|
+
if (/\.vue$/.test(page) || !files[key]) {
|
360
|
+
files[key] = page.replace(/(['"])/g, '\\$1')
|
361
|
+
}
|
362
|
+
}
|
363
|
+
templateVars.router.routes = createRoutes({
|
364
|
+
files: Object.values(files),
|
365
|
+
srcDir: this.options.srcDir,
|
366
|
+
pagesDir: this.options.dir.pages,
|
367
|
+
routeNameSplitter,
|
368
|
+
supportedExtensions: this.supportedExtensions,
|
369
|
+
trailingSlash
|
370
|
+
})
|
371
|
+
} else { // If user defined a custom method to create routes
|
372
|
+
templateVars.router.routes = await this.options.build.createRoutes(
|
373
|
+
this.options.srcDir
|
374
|
+
)
|
375
|
+
}
|
376
|
+
|
377
|
+
await this.nuxt.callHook(
|
378
|
+
'build:extendRoutes',
|
379
|
+
templateVars.router.routes,
|
380
|
+
r
|
381
|
+
)
|
382
|
+
// router.extendRoutes method
|
383
|
+
if (typeof this.options.router.extendRoutes === 'function') {
|
384
|
+
// let the user extend the routes
|
385
|
+
const extendedRoutes = await this.options.router.extendRoutes(
|
386
|
+
templateVars.router.routes,
|
387
|
+
r
|
388
|
+
)
|
389
|
+
// Only overwrite routes when something is returned for backwards compatibility
|
390
|
+
if (extendedRoutes !== undefined) {
|
391
|
+
templateVars.router.routes = extendedRoutes
|
392
|
+
}
|
393
|
+
}
|
394
|
+
|
395
|
+
// Make routes accessible for other modules and webpack configs
|
396
|
+
this.routes = templateVars.router.routes
|
397
|
+
}
|
398
|
+
|
399
|
+
async resolveStore ({ templateVars, templateFiles }) {
|
400
|
+
// Add store if needed
|
401
|
+
if (!this.options.features.store || !this.options.store) {
|
402
|
+
return
|
403
|
+
}
|
404
|
+
|
405
|
+
templateVars.storeModules = (await this.resolveRelative(this.options.dir.store))
|
406
|
+
.sort(({ src: p1 }, { src: p2 }) => {
|
407
|
+
// modules are sorted from low to high priority (for overwriting properties)
|
408
|
+
let res = p1.split('/').length - p2.split('/').length
|
409
|
+
if (res === 0 && p1.includes('/index.')) {
|
410
|
+
res = -1
|
411
|
+
} else if (res === 0 && p2.includes('/index.')) {
|
412
|
+
res = 1
|
413
|
+
}
|
414
|
+
return res
|
415
|
+
})
|
416
|
+
|
417
|
+
templateFiles.push('store.js')
|
418
|
+
}
|
419
|
+
|
420
|
+
async resolveMiddleware ({ templateVars, templateFiles }) {
|
421
|
+
if (!this.options.features.middleware) {
|
422
|
+
return
|
423
|
+
}
|
424
|
+
|
425
|
+
const middleware = await this.resolveRelative(this.options.dir.middleware)
|
426
|
+
const extRE = new RegExp(`\\.(${this.supportedExtensions.join('|')})$`)
|
427
|
+
templateVars.middleware = middleware.map(({ src }) => {
|
428
|
+
const name = src.replace(extRE, '')
|
429
|
+
const dst = this.relativeToBuild(this.options.srcDir, this.options.dir.middleware, src)
|
430
|
+
return { name, src, dst }
|
431
|
+
})
|
432
|
+
|
433
|
+
templateFiles.push('middleware.js')
|
434
|
+
}
|
435
|
+
|
436
|
+
async resolveCustomTemplates (templateContext) {
|
437
|
+
// Sanitize custom template files
|
438
|
+
this.options.build.templates = this.options.build.templates.map((t) => {
|
439
|
+
const src = t.src || t
|
440
|
+
return {
|
441
|
+
src: r(this.options.srcDir, src),
|
442
|
+
dst: t.dst || path.basename(src),
|
443
|
+
custom: true,
|
444
|
+
...(typeof t === 'object' ? t : undefined)
|
445
|
+
}
|
446
|
+
})
|
447
|
+
|
448
|
+
const customTemplateFiles = this.options.build.templates.map(t => t.dst || path.basename(t.src || t))
|
449
|
+
|
450
|
+
const templatePaths = uniq([
|
451
|
+
// Modules & user provided templates
|
452
|
+
// first custom to keep their index
|
453
|
+
...customTemplateFiles,
|
454
|
+
// @nuxt/vue-app templates
|
455
|
+
...templateContext.templateFiles
|
456
|
+
])
|
457
|
+
|
458
|
+
const appDir = path.resolve(this.options.srcDir, this.options.dir.app)
|
459
|
+
|
460
|
+
templateContext.templateFiles = await Promise.all(templatePaths.map(async (file) => {
|
461
|
+
// Use custom file if provided in build.templates[]
|
462
|
+
const customTemplateIndex = customTemplateFiles.indexOf(file)
|
463
|
+
const customTemplate = customTemplateIndex !== -1 ? this.options.build.templates[customTemplateIndex] : null
|
464
|
+
let src = customTemplate ? (customTemplate.src || customTemplate) : r(this.template.dir, file)
|
465
|
+
|
466
|
+
// Allow override templates using a file with same name in ${srcDir}/app
|
467
|
+
const customAppFile = path.resolve(this.options.srcDir, this.options.dir.app, file)
|
468
|
+
const customAppFileExists = customAppFile.startsWith(appDir) && await fsExtra.exists(customAppFile)
|
469
|
+
if (customAppFileExists) {
|
470
|
+
src = customAppFile
|
471
|
+
}
|
472
|
+
|
473
|
+
return {
|
474
|
+
src,
|
475
|
+
dst: file,
|
476
|
+
custom: Boolean(customAppFileExists || customTemplate),
|
477
|
+
options: (customTemplate && customTemplate.options) || {}
|
478
|
+
}
|
479
|
+
}))
|
480
|
+
}
|
481
|
+
|
482
|
+
async resolveLoadingIndicator ({ templateFiles }) {
|
483
|
+
if (!this.options.loadingIndicator.name) {
|
484
|
+
return
|
485
|
+
}
|
486
|
+
let indicatorPath = path.resolve(
|
487
|
+
this.template.dir,
|
488
|
+
'views/loading',
|
489
|
+
this.options.loadingIndicator.name + '.html'
|
490
|
+
)
|
491
|
+
|
492
|
+
let customIndicator = false
|
493
|
+
if (!await fsExtra.exists(indicatorPath)) {
|
494
|
+
indicatorPath = this.nuxt.resolver.resolveAlias(
|
495
|
+
this.options.loadingIndicator.name
|
496
|
+
)
|
497
|
+
|
498
|
+
if (await fsExtra.exists(indicatorPath)) {
|
499
|
+
customIndicator = true
|
500
|
+
} else {
|
501
|
+
indicatorPath = null
|
502
|
+
}
|
503
|
+
}
|
504
|
+
|
505
|
+
if (!indicatorPath) {
|
506
|
+
consola.error(
|
507
|
+
`Could not fetch loading indicator: ${
|
508
|
+
this.options.loadingIndicator.name
|
509
|
+
}`
|
510
|
+
)
|
511
|
+
return
|
512
|
+
}
|
513
|
+
|
514
|
+
templateFiles.push({
|
515
|
+
src: indicatorPath,
|
516
|
+
dst: 'loading.html',
|
517
|
+
custom: customIndicator,
|
518
|
+
options: this.options.loadingIndicator
|
519
|
+
})
|
520
|
+
}
|
521
|
+
|
522
|
+
async compileTemplates (templateContext) {
|
523
|
+
// Prepare template options
|
524
|
+
const { templateVars, templateFiles, templateOptions } = templateContext
|
525
|
+
|
526
|
+
await this.nuxt.callHook('build:templates', {
|
527
|
+
templateVars,
|
528
|
+
templatesFiles: templateFiles,
|
529
|
+
resolve: r
|
530
|
+
})
|
531
|
+
|
532
|
+
templateOptions.imports = {
|
533
|
+
...templateOptions.imports,
|
534
|
+
resolvePath: this.nuxt.resolver.resolvePath,
|
535
|
+
resolveAlias: this.nuxt.resolver.resolveAlias,
|
536
|
+
relativeToBuild: this.relativeToBuild
|
537
|
+
}
|
538
|
+
|
539
|
+
// Interpret and move template files to .nuxt/
|
540
|
+
await Promise.all(
|
541
|
+
templateFiles.map(async (templateFile) => {
|
542
|
+
const { src, dst, custom } = templateFile
|
543
|
+
|
544
|
+
// Add custom templates to watcher
|
545
|
+
if (custom) {
|
546
|
+
this.options.build.watch.push(src)
|
547
|
+
}
|
548
|
+
|
549
|
+
// Render template to dst
|
550
|
+
const fileContent = await fsExtra.readFile(src, 'utf8')
|
551
|
+
|
552
|
+
let content
|
553
|
+
try {
|
554
|
+
const templateFunction = template(fileContent, templateOptions)
|
555
|
+
content = stripWhitespace(
|
556
|
+
templateFunction({
|
557
|
+
...templateVars,
|
558
|
+
...templateFile
|
559
|
+
})
|
560
|
+
)
|
561
|
+
} catch (err) {
|
562
|
+
throw new Error(`Could not compile template ${src}: ${err.message}`)
|
563
|
+
}
|
564
|
+
|
565
|
+
// Ensure parent dir exits and write file
|
566
|
+
const relativePath = r(this.options.buildDir, dst)
|
567
|
+
await fsExtra.outputFile(relativePath, content, 'utf8')
|
568
|
+
})
|
569
|
+
)
|
570
|
+
}
|
571
|
+
|
572
|
+
resolvePlugins () {
|
573
|
+
// Check plugins exist then set alias to their real path
|
574
|
+
return Promise.all(this.plugins.map(async (p) => {
|
575
|
+
const ext = '{?(.+([^.])),/index.+([^.])}'
|
576
|
+
const pluginFiles = await glob(`${p.src}${ext}`)
|
577
|
+
|
578
|
+
if (!pluginFiles || pluginFiles.length === 0) {
|
579
|
+
throw new Error(`Plugin not found: ${p.src}`)
|
580
|
+
}
|
581
|
+
|
582
|
+
if (pluginFiles.length > 1 && !isIndexFileAndFolder(pluginFiles)) {
|
583
|
+
consola.warn({
|
584
|
+
message: `Found ${pluginFiles.length} plugins that match the configuration, suggest to specify extension:`,
|
585
|
+
additional: '\n' + pluginFiles.map(x => `- ${x}`).join('\n')
|
586
|
+
})
|
587
|
+
}
|
588
|
+
|
589
|
+
p.src = this.relativeToBuild(p.src)
|
590
|
+
}))
|
591
|
+
}
|
592
|
+
|
593
|
+
// TODO: Uncomment when generateConfig enabled again
|
594
|
+
// async generateConfig() {
|
595
|
+
// const config = path.resolve(this.options.buildDir, 'build.config.js')
|
596
|
+
// const options = omit(this.options, Options.unsafeKeys)
|
597
|
+
// await fsExtra.writeFile(
|
598
|
+
// config,
|
599
|
+
// `export default ${JSON.stringify(options, null, ' ')}`,
|
600
|
+
// 'utf8'
|
601
|
+
// )
|
602
|
+
// }
|
603
|
+
|
604
|
+
createFileWatcher (patterns, events, listener, watcherCreatedCallback) {
|
605
|
+
const options = this.options.watchers.chokidar
|
606
|
+
const watcher = chokidar.watch(patterns, options)
|
607
|
+
|
608
|
+
for (const event of events) {
|
609
|
+
watcher.on(event, listener)
|
610
|
+
}
|
611
|
+
|
612
|
+
// TODO: due to fixes in chokidar this isnt used anymore and could be removed in Nuxt v3
|
613
|
+
const { rewatchOnRawEvents } = this.options.watchers
|
614
|
+
if (rewatchOnRawEvents && Array.isArray(rewatchOnRawEvents)) {
|
615
|
+
watcher.on('raw', (_event) => {
|
616
|
+
if (rewatchOnRawEvents.includes(_event)) {
|
617
|
+
watcher.close()
|
618
|
+
|
619
|
+
listener()
|
620
|
+
this.createFileWatcher(patterns, events, listener, watcherCreatedCallback)
|
621
|
+
}
|
622
|
+
})
|
623
|
+
}
|
624
|
+
|
625
|
+
if (typeof watcherCreatedCallback === 'function') {
|
626
|
+
watcherCreatedCallback(watcher)
|
627
|
+
}
|
628
|
+
}
|
629
|
+
|
630
|
+
assignWatcher (key) {
|
631
|
+
return (watcher) => {
|
632
|
+
if (this.watchers[key]) {
|
633
|
+
this.watchers[key].close()
|
634
|
+
}
|
635
|
+
this.watchers[key] = watcher
|
636
|
+
}
|
637
|
+
}
|
638
|
+
|
639
|
+
watchClient () {
|
640
|
+
let patterns = [
|
641
|
+
r(this.options.srcDir, this.options.dir.layouts),
|
642
|
+
r(this.options.srcDir, this.options.dir.middleware)
|
643
|
+
]
|
644
|
+
|
645
|
+
if (this.options.store) {
|
646
|
+
patterns.push(r(this.options.srcDir, this.options.dir.store))
|
647
|
+
}
|
648
|
+
|
649
|
+
if (this._nuxtPages && !this._defaultPage) {
|
650
|
+
patterns.push(r(this.options.srcDir, this.options.dir.pages))
|
651
|
+
}
|
652
|
+
|
653
|
+
patterns = patterns.map((path, ...args) => upath.normalizeSafe(this.globPathWithExtensions(path), ...args))
|
654
|
+
|
655
|
+
const refreshFiles = debounce(() => this.generateRoutesAndFiles(), 200)
|
656
|
+
|
657
|
+
// Watch for src Files
|
658
|
+
this.createFileWatcher(patterns, ['add', 'unlink'], refreshFiles, this.assignWatcher('files'))
|
659
|
+
|
660
|
+
// Watch for custom provided files
|
661
|
+
const customPatterns = uniq([
|
662
|
+
...this.options.build.watch,
|
663
|
+
...Object.values(omit(this.options.build.styleResources, ['options']))
|
664
|
+
]).map(this.nuxt.resolver.resolveAlias).map(upath.normalizeSafe)
|
665
|
+
|
666
|
+
if (customPatterns.length === 0) {
|
667
|
+
return
|
668
|
+
}
|
669
|
+
|
670
|
+
this.createFileWatcher(customPatterns, ['change'], refreshFiles, this.assignWatcher('custom'))
|
671
|
+
|
672
|
+
// Watch for app/ files
|
673
|
+
this.createFileWatcher([r(this.options.srcDir, this.options.dir.app)], ['add', 'change', 'unlink'], refreshFiles, this.assignWatcher('app'))
|
674
|
+
}
|
675
|
+
|
676
|
+
serverMiddlewareHMR () {
|
677
|
+
// Check nuxt.server dependency
|
678
|
+
if (!this.nuxt.server) {
|
679
|
+
return
|
680
|
+
}
|
681
|
+
|
682
|
+
// Get registered server middleware with path
|
683
|
+
const entries = this.nuxt.server.serverMiddlewarePaths()
|
684
|
+
|
685
|
+
// Resolve dependency tree
|
686
|
+
const deps = new Set()
|
687
|
+
const dep2Entry = {}
|
688
|
+
|
689
|
+
for (const entry of entries) {
|
690
|
+
for (const dep of scanRequireTree(entry)) {
|
691
|
+
deps.add(dep)
|
692
|
+
if (!dep2Entry[dep]) {
|
693
|
+
dep2Entry[dep] = new Set()
|
694
|
+
}
|
695
|
+
dep2Entry[dep].add(entry)
|
696
|
+
}
|
697
|
+
}
|
698
|
+
|
699
|
+
// Create watcher
|
700
|
+
this.createFileWatcher(
|
701
|
+
Array.from(deps),
|
702
|
+
['all'],
|
703
|
+
debounce((event, fileName) => {
|
704
|
+
if (!dep2Entry[fileName]) {
|
705
|
+
return // #7097
|
706
|
+
}
|
707
|
+
for (const entry of dep2Entry[fileName]) {
|
708
|
+
// Reload entry
|
709
|
+
let newItem
|
710
|
+
try {
|
711
|
+
newItem = this.nuxt.server.replaceMiddleware(entry, entry)
|
712
|
+
} catch (error) {
|
713
|
+
consola.error(error)
|
714
|
+
consola.error(`[HMR Error]: ${error}`)
|
715
|
+
}
|
716
|
+
|
717
|
+
if (!newItem) {
|
718
|
+
// Full reload if HMR failed
|
719
|
+
return this.nuxt.callHook('watch:restart', { event, path: fileName })
|
720
|
+
}
|
721
|
+
|
722
|
+
// Log
|
723
|
+
consola.info(`[HMR] ${chalk.cyan(newItem.route || '/')} (${chalk.grey(fileName)})`)
|
724
|
+
}
|
725
|
+
// Tree may be changed so recreate watcher
|
726
|
+
this.serverMiddlewareHMR()
|
727
|
+
}, 200),
|
728
|
+
this.assignWatcher('serverMiddleware')
|
729
|
+
)
|
730
|
+
}
|
731
|
+
|
732
|
+
watchRestart () {
|
733
|
+
const nuxtRestartWatch = [
|
734
|
+
// Custom watchers
|
735
|
+
...this.options.watch
|
736
|
+
].map(this.nuxt.resolver.resolveAlias)
|
737
|
+
|
738
|
+
if (this.ignore.ignoreFile) {
|
739
|
+
nuxtRestartWatch.push(this.ignore.ignoreFile)
|
740
|
+
}
|
741
|
+
|
742
|
+
if (this.options._envConfig && this.options._envConfig.dotenv) {
|
743
|
+
nuxtRestartWatch.push(this.options._envConfig.dotenv)
|
744
|
+
}
|
745
|
+
|
746
|
+
// If default page displayed, watch for first page creation
|
747
|
+
if (this._nuxtPages && this._defaultPage) {
|
748
|
+
nuxtRestartWatch.push(path.join(this.options.srcDir, this.options.dir.pages))
|
749
|
+
}
|
750
|
+
// If store not activated, watch for a file in the directory
|
751
|
+
if (!this.options.store) {
|
752
|
+
nuxtRestartWatch.push(path.join(this.options.srcDir, this.options.dir.store))
|
753
|
+
}
|
754
|
+
|
755
|
+
this.createFileWatcher(
|
756
|
+
nuxtRestartWatch,
|
757
|
+
['all'],
|
758
|
+
async (event, fileName) => {
|
759
|
+
if (['add', 'change', 'unlink'].includes(event) === false) {
|
760
|
+
return
|
761
|
+
}
|
762
|
+
await this.nuxt.callHook('watch:fileChanged', this, fileName) // Legacy
|
763
|
+
await this.nuxt.callHook('watch:restart', { event, path: fileName })
|
764
|
+
},
|
765
|
+
this.assignWatcher('restart')
|
766
|
+
)
|
767
|
+
}
|
768
|
+
|
769
|
+
unwatch () {
|
770
|
+
for (const watcher in this.watchers) {
|
771
|
+
this.watchers[watcher].close()
|
772
|
+
}
|
773
|
+
}
|
774
|
+
|
775
|
+
async close () {
|
776
|
+
if (this.__closed) {
|
777
|
+
return
|
778
|
+
}
|
779
|
+
this.__closed = true
|
780
|
+
|
781
|
+
// Unwatch
|
782
|
+
this.unwatch()
|
783
|
+
|
784
|
+
// Close bundleBuilder
|
785
|
+
if (typeof this.bundleBuilder.close === 'function') {
|
786
|
+
await this.bundleBuilder.close()
|
787
|
+
}
|
788
|
+
}
|
789
|
+
}
|
790
|
+
|
791
|
+
const STATUS = {
|
792
|
+
INITIAL: 1,
|
793
|
+
BUILD_DONE: 2,
|
794
|
+
BUILDING: 3
|
795
|
+
}
|