From 53e98a958c842d33911fa6ef94fa82753f711bfb Mon Sep 17 00:00:00 2001 From: Pooya Parsa Date: Fri, 16 Mar 2018 19:42:06 +0330 Subject: [PATCH] feat: rewrite core to esm --- bin/common/utils.js | 3 +- bin/nuxt-dev | 12 ++-- .../async-component-injection/nuxt.config.js | 2 +- examples/async-data/nuxt.config.js | 2 +- examples/auth-routes/api/index.js | 4 +- examples/auth-routes/nuxt.config.js | 6 +- examples/axios/nuxt.config.js | 2 +- examples/cached-components/nuxt.config.js | 2 +- examples/coffeescript/modules/coffeescript.js | 2 +- examples/coffeescript/nuxt.config.js | 2 +- examples/custom-build/nuxt.config.js | 2 +- examples/custom-loading/nuxt.config.js | 2 +- examples/custom-routes/nuxt.config.js | 2 +- examples/custom-server/nuxt.config.js | 2 +- examples/custom-server/server.js | 6 +- examples/dynamic-components/nuxt.config.js | 2 +- examples/dynamic-layouts/nuxt.config.js | 2 +- examples/global-css/nuxt.config.js | 2 +- examples/i18n/nuxt.config.js | 2 +- examples/layout-transitions/nuxt.config.js | 2 +- examples/markdownit/nuxt.config.js | 2 +- examples/meta-info/nuxt.config.js | 2 +- examples/middleware/nuxt.config.js | 2 +- examples/nested-routes/nuxt.config.js | 2 +- examples/plugins-vendor/nuxt.config.js | 2 +- examples/routes-transitions/nuxt.config.js | 2 +- examples/scroll-behavior/nuxt.config.js | 2 +- examples/spa/nuxt.config.js | 2 +- examples/storybook/nuxt.config.js | 4 +- examples/style-resources/nuxt.config.js | 2 +- examples/tailwindcss/nuxt.config.js | 2 +- examples/tailwindcss/tailwind.js | 2 +- examples/typescript/modules/typescript.js | 2 +- examples/typescript/nuxt.config.js | 2 +- examples/uikit/nuxt.config.js | 2 +- examples/vue-apollo/nuxt.config.js | 2 +- examples/vue-chartjs/nuxt.config.js | 2 +- examples/vue-class-component/nuxt.config.js | 2 +- examples/vuex-persistedstate/nuxt.config.js | 2 +- examples/with-amp/nuxt.config.js | 2 +- examples/with-buefy/nuxt.config.js | 2 +- examples/with-cookies/nuxt.config.js | 2 +- examples/with-element-ui/nuxt.config.js | 2 +- examples/with-feathers/nuxt.config.js | 2 +- examples/with-feathers/src/app.js | 26 ++++--- examples/with-feathers/src/hooks/index.js | 4 +- examples/with-feathers/src/index.js | 3 +- .../with-feathers/src/middleware/index.js | 6 +- examples/with-feathers/src/middleware/nuxt.js | 6 +- .../src/services/authentication/index.js | 6 +- examples/with-feathers/src/services/index.js | 7 +- .../src/services/user/hooks/index.js | 5 +- .../with-feathers/src/services/user/index.js | 12 ++-- examples/with-feathers/test/app.test.js | 8 +-- .../test/services/user/index.test.js | 6 +- examples/with-firebase/nuxt.config.js | 2 +- examples/with-museui/nuxt.config.js | 2 +- examples/with-purgecss/nuxt.config.js | 8 +-- examples/with-purgecss/tailwind.js | 2 +- examples/with-sockets/io/index.js | 9 ++- examples/with-sockets/nuxt.config.js | 2 +- examples/with-sockets/server.js | 13 ++-- examples/with-tape/test/setup.js | 2 +- examples/with-vue-material/nuxt.config.js | 2 +- examples/with-vuetify/nuxt.config.js | 4 +- examples/with-vux/nuxt.config.js | 6 +- lib/builder/builder.js | 44 ++++++------ lib/builder/generator.js | 29 ++------ lib/builder/index.js | 6 +- lib/builder/webpack/base.config.js | 22 +++--- lib/builder/webpack/client.config.js | 24 +++---- lib/builder/webpack/plugins/progress.js | 8 +-- lib/builder/webpack/plugins/vue/client.js | 8 +-- lib/builder/webpack/plugins/vue/server.js | 4 +- lib/builder/webpack/plugins/vue/util.js | 14 ++-- lib/builder/webpack/plugins/warnfix.js | 2 +- lib/builder/webpack/postcss.js | 14 ++-- lib/builder/webpack/server.config.js | 18 ++--- lib/builder/webpack/style-loader.js | 8 +-- lib/builder/webpack/vue-loader.js | 6 +- lib/common/index.js | 7 -- lib/common/module.js | 8 +++ lib/common/options.js | 12 ++-- lib/common/utils.js | 72 +++++++++---------- lib/core/index.js | 13 ++-- lib/core/meta.js | 10 +-- lib/core/middleware/error.js | 8 +-- lib/core/middleware/nuxt.js | 8 +-- lib/core/module.js | 12 ++-- lib/core/nuxt.js | 31 ++++---- lib/core/renderer.js | 42 ++++++----- lib/index.js | 19 +++-- lib/index.mjs | 18 +++++ package.json | 1 + test/basic.generate.test.js | 10 +-- test/custom-dirs.test.js | 7 +- test/debug.test.js | 6 +- test/deprecate.test.js | 7 +- test/error.test.js | 7 +- test/fallback.generate.test.js | 10 +-- test/fixtures/basic/nuxt.config.js | 4 +- test/fixtures/custom-dirs/nuxt.config.js | 2 +- test/fixtures/debug/nuxt.config.js | 2 +- .../modules/deprecated-apis/index.js | 2 +- test/fixtures/deprecate/nuxt.config.js | 2 +- test/fixtures/error/nuxt.config.js | 2 +- test/fixtures/module/modules/basic/index.js | 4 +- test/fixtures/module/modules/empty/index.js | 2 +- test/fixtures/module/modules/hooks/index.js | 2 +- .../module/modules/middleware/index.js | 2 +- .../fixtures/module/modules/middleware/log.js | 2 +- .../module/modules/middleware/midd1.js | 2 +- .../module/modules/middleware/midd2.js | 2 +- .../modules/middleware/use-middleware.js | 2 +- .../fixtures/module/modules/template/index.js | 4 +- test/fixtures/module/nuxt.config.js | 2 +- test/fixtures/spa/nuxt.config.js | 2 +- test/fixtures/ssr/nuxt.config.js | 2 +- test/fixtures/with-config/nuxt.config.js | 4 +- test/helpers/config.js | 11 +++ test/module.test.js | 9 ++- test/spa.test.js | 6 +- test/ssr.test.js | 6 +- test/with-config.test.js | 8 +-- 124 files changed, 427 insertions(+), 426 deletions(-) delete mode 100644 lib/common/index.js create mode 100644 lib/common/module.js create mode 100644 lib/index.mjs create mode 100644 test/helpers/config.js diff --git a/bin/common/utils.js b/bin/common/utils.js index 63aa89dd3d..4f352ff2e6 100644 --- a/bin/common/utils.js +++ b/bin/common/utils.js @@ -1,6 +1,7 @@ const { Utils } = require('../..') const { resolve } = require('path') const { existsSync } = require('fs') +const { requireModule } = require('../../lib/common/module') const getRootDir = argv => resolve(argv._[0] || '.') const getNuxtConfigFile = argv => resolve(getRootDir(argv), argv['config-file']) @@ -15,7 +16,7 @@ exports.loadNuxtConfig = argv => { if (existsSync(nuxtConfigFile)) { delete require.cache[nuxtConfigFile] - options = require(nuxtConfigFile) + options = requireModule(nuxtConfigFile) } else if (argv['config-file'] !== 'nuxt.config.js') { Utils.fatalError('Could not load config file: ' + argv['config-file']) } diff --git a/bin/nuxt-dev b/bin/nuxt-dev index e71811cbed..766d734078 100755 --- a/bin/nuxt-dev +++ b/bin/nuxt-dev @@ -3,17 +3,15 @@ const defaultsDeep = require('lodash/defaultsDeep') const debug = require('debug')('nuxt:build') -debug.color = 2 // force green color const parseArgs = require('minimist') const chokidar = require('chokidar') -const { version } = require('../package.json') +const { version } = require('../package.json') const { Nuxt, Builder, Utils } = require('..') -const { - loadNuxtConfig, - getLatestHost, - nuxtConfigFile -} = require('./common/utils') + +const { loadNuxtConfig, getLatestHost, nuxtConfigFile } = require('./common/utils') + +debug.color = 2 // force green color const argv = parseArgs(process.argv.slice(2), { alias: { diff --git a/examples/async-component-injection/nuxt.config.js b/examples/async-component-injection/nuxt.config.js index 569cee3b0b..94c5adc998 100644 --- a/examples/async-component-injection/nuxt.config.js +++ b/examples/async-component-injection/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { head: { title: 'Nuxt Blog', meta: [ diff --git a/examples/async-data/nuxt.config.js b/examples/async-data/nuxt.config.js index a54c344d5d..883ef1b53d 100644 --- a/examples/async-data/nuxt.config.js +++ b/examples/async-data/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { loading: { color: '#4FC08D', failedColor: '#bf5050', diff --git a/examples/auth-routes/api/index.js b/examples/auth-routes/api/index.js index 04d6febace..7450bc9e6d 100644 --- a/examples/auth-routes/api/index.js +++ b/examples/auth-routes/api/index.js @@ -1,4 +1,4 @@ -const express = require('express') +import express from 'express' // Create express router const router = express.Router() @@ -30,7 +30,7 @@ router.post('/logout', (req, res) => { }) // Export the server middleware -module.exports = { +export default { path: '/api', handler: router } diff --git a/examples/auth-routes/nuxt.config.js b/examples/auth-routes/nuxt.config.js index 9ae03b9259..e0efd9aebf 100644 --- a/examples/auth-routes/nuxt.config.js +++ b/examples/auth-routes/nuxt.config.js @@ -1,7 +1,7 @@ -const bodyParser = require('body-parser') -const session = require('express-session') +import bodyParser from 'body-parser' +import session from 'express-session' -module.exports = { +export default { head: { title: 'Auth Routes', meta: [ diff --git a/examples/axios/nuxt.config.js b/examples/axios/nuxt.config.js index 19d049afa8..35675b0809 100644 --- a/examples/axios/nuxt.config.js +++ b/examples/axios/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { modules: [ '@nuxtjs/axios', '@nuxtjs/proxy' diff --git a/examples/cached-components/nuxt.config.js b/examples/cached-components/nuxt.config.js index e9f046659f..485ee61e0c 100644 --- a/examples/cached-components/nuxt.config.js +++ b/examples/cached-components/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { render: { bundleRenderer: { cache: require('lru-cache')({ diff --git a/examples/coffeescript/modules/coffeescript.js b/examples/coffeescript/modules/coffeescript.js index a6a0a6c040..daf60cd477 100644 --- a/examples/coffeescript/modules/coffeescript.js +++ b/examples/coffeescript/modules/coffeescript.js @@ -1,4 +1,4 @@ -module.exports = function () { +export default function () { // Add .coffee extension for store, middleware and more this.nuxt.options.extensions.push('coffee') // Extend build diff --git a/examples/coffeescript/nuxt.config.js b/examples/coffeescript/nuxt.config.js index 67afea59ff..3d8378c381 100644 --- a/examples/coffeescript/nuxt.config.js +++ b/examples/coffeescript/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { /* ** Headers of the page */ diff --git a/examples/custom-build/nuxt.config.js b/examples/custom-build/nuxt.config.js index 26ad2681d5..aab9dcac78 100644 --- a/examples/custom-build/nuxt.config.js +++ b/examples/custom-build/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { build: { filenames: { css: 'styles.[chunkhash].css', // default: common.[chunkhash].css diff --git a/examples/custom-loading/nuxt.config.js b/examples/custom-loading/nuxt.config.js index b37861914c..f39ade9d80 100644 --- a/examples/custom-loading/nuxt.config.js +++ b/examples/custom-loading/nuxt.config.js @@ -1,3 +1,3 @@ -module.exports = { +export default { loading: '~/components/loading.vue' } diff --git a/examples/custom-routes/nuxt.config.js b/examples/custom-routes/nuxt.config.js index 631f375658..efba7fa697 100644 --- a/examples/custom-routes/nuxt.config.js +++ b/examples/custom-routes/nuxt.config.js @@ -1,2 +1,2 @@ -module.exports = { +export default { } diff --git a/examples/custom-server/nuxt.config.js b/examples/custom-server/nuxt.config.js index 4ba52ba2c8..b1c6ea436a 100644 --- a/examples/custom-server/nuxt.config.js +++ b/examples/custom-server/nuxt.config.js @@ -1 +1 @@ -module.exports = {} +export default {} diff --git a/examples/custom-server/server.js b/examples/custom-server/server.js index 234b379204..05cd6338cb 100644 --- a/examples/custom-server/server.js +++ b/examples/custom-server/server.js @@ -1,5 +1,7 @@ -const app = require('express')() -const { Nuxt, Builder } = require('nuxt') +import express from 'express' +import { Nuxt, Builder } from 'nuxt' + +const app = express() const host = process.env.HOST || '127.0.0.1' const port = process.env.PORT || 3000 diff --git a/examples/dynamic-components/nuxt.config.js b/examples/dynamic-components/nuxt.config.js index 4cd058a6a5..cc195cee5e 100644 --- a/examples/dynamic-components/nuxt.config.js +++ b/examples/dynamic-components/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { head: { titleTemplate: 'Nuxt.js - Dynamic Components', meta: [ diff --git a/examples/dynamic-layouts/nuxt.config.js b/examples/dynamic-layouts/nuxt.config.js index ab913e20b1..7a6bb49c01 100644 --- a/examples/dynamic-layouts/nuxt.config.js +++ b/examples/dynamic-layouts/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { head: { meta: [ { content: 'width=device-width,initial-scale=1', name: 'viewport' } diff --git a/examples/global-css/nuxt.config.js b/examples/global-css/nuxt.config.js index 3dc2839759..1846b62750 100644 --- a/examples/global-css/nuxt.config.js +++ b/examples/global-css/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { head: { meta: [ { charset: 'utf-8' }, diff --git a/examples/i18n/nuxt.config.js b/examples/i18n/nuxt.config.js index f8964c5bb0..45979caaf2 100644 --- a/examples/i18n/nuxt.config.js +++ b/examples/i18n/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { loading: { color: 'cyan' }, router: { middleware: 'i18n' diff --git a/examples/layout-transitions/nuxt.config.js b/examples/layout-transitions/nuxt.config.js index d002ba62da..a8ac6ebd10 100644 --- a/examples/layout-transitions/nuxt.config.js +++ b/examples/layout-transitions/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { css: ['~/assets/main.css'], layoutTransition: { name: 'layout', diff --git a/examples/markdownit/nuxt.config.js b/examples/markdownit/nuxt.config.js index a1d31f09bd..d0d4440acc 100644 --- a/examples/markdownit/nuxt.config.js +++ b/examples/markdownit/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { modules: [ '@nuxtjs/markdownit' ], diff --git a/examples/meta-info/nuxt.config.js b/examples/meta-info/nuxt.config.js index b7ee0984f2..eb1d1a0265 100644 --- a/examples/meta-info/nuxt.config.js +++ b/examples/meta-info/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { head: { titleTemplate: '%s - Nuxt.js', meta: [ diff --git a/examples/middleware/nuxt.config.js b/examples/middleware/nuxt.config.js index 1e075eff57..ce672e35ab 100644 --- a/examples/middleware/nuxt.config.js +++ b/examples/middleware/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { router: { middleware: ['visits', 'user-agent'] } diff --git a/examples/nested-routes/nuxt.config.js b/examples/nested-routes/nuxt.config.js index 8dd154d104..b72f941c44 100644 --- a/examples/nested-routes/nuxt.config.js +++ b/examples/nested-routes/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { loading: false, head: { meta: [ diff --git a/examples/plugins-vendor/nuxt.config.js b/examples/plugins-vendor/nuxt.config.js index 6487a6dea1..182eba4922 100644 --- a/examples/plugins-vendor/nuxt.config.js +++ b/examples/plugins-vendor/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { plugins: [ // ssr: false to only include it on client-side { src: '~/plugins/vue-notifications.js', ssr: false } diff --git a/examples/routes-transitions/nuxt.config.js b/examples/routes-transitions/nuxt.config.js index eb16f6780d..737f516991 100644 --- a/examples/routes-transitions/nuxt.config.js +++ b/examples/routes-transitions/nuxt.config.js @@ -1,3 +1,3 @@ -module.exports = { +export default { css: ['~/assets/main.css'] } diff --git a/examples/scroll-behavior/nuxt.config.js b/examples/scroll-behavior/nuxt.config.js index eb16f6780d..737f516991 100644 --- a/examples/scroll-behavior/nuxt.config.js +++ b/examples/scroll-behavior/nuxt.config.js @@ -1,3 +1,3 @@ -module.exports = { +export default { css: ['~/assets/main.css'] } diff --git a/examples/spa/nuxt.config.js b/examples/spa/nuxt.config.js index 7108b6c479..84d3d9b1b8 100644 --- a/examples/spa/nuxt.config.js +++ b/examples/spa/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { /* ** Single Page Application mode ** Means no SSR diff --git a/examples/storybook/nuxt.config.js b/examples/storybook/nuxt.config.js index 24a6bfbb03..b54202b6a6 100644 --- a/examples/storybook/nuxt.config.js +++ b/examples/storybook/nuxt.config.js @@ -1,6 +1,6 @@ -const pkg = require('./package') +import pkg from './package' -module.exports = { +export default { mode: 'universal', /* diff --git a/examples/style-resources/nuxt.config.js b/examples/style-resources/nuxt.config.js index 32611aab6f..c3eb94b569 100644 --- a/examples/style-resources/nuxt.config.js +++ b/examples/style-resources/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { build: { // You cannot use ~/ or @/ here since it's a Webpack plugin styleResources: { diff --git a/examples/tailwindcss/nuxt.config.js b/examples/tailwindcss/nuxt.config.js index 7550d05a97..69cf86bd22 100644 --- a/examples/tailwindcss/nuxt.config.js +++ b/examples/tailwindcss/nuxt.config.js @@ -1,3 +1,3 @@ -module.exports = { +export default { css: ['~/assets/css/tailwind.css'] } diff --git a/examples/tailwindcss/tailwind.js b/examples/tailwindcss/tailwind.js index 9a4af76aba..040b3a7fbe 100644 --- a/examples/tailwindcss/tailwind.js +++ b/examples/tailwindcss/tailwind.js @@ -127,7 +127,7 @@ var colors = { 'pink-lightest': '#ffebef' } -module.exports = { +export default { /* |----------------------------------------------------------------------------- diff --git a/examples/typescript/modules/typescript.js b/examples/typescript/modules/typescript.js index 3c430b165b..6e672db8cb 100644 --- a/examples/typescript/modules/typescript.js +++ b/examples/typescript/modules/typescript.js @@ -1,4 +1,4 @@ -module.exports = function () { +export default function () { // Add .ts extension for store, middleware and more this.nuxt.options.extensions.push('ts') // Extend build diff --git a/examples/typescript/nuxt.config.js b/examples/typescript/nuxt.config.js index 6bba75ad6c..682c251744 100644 --- a/examples/typescript/nuxt.config.js +++ b/examples/typescript/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { env: { baseUrl: process.env.BASE_URL || 'http://localhost:3000' }, diff --git a/examples/uikit/nuxt.config.js b/examples/uikit/nuxt.config.js index 6f916f758e..33ff283acc 100644 --- a/examples/uikit/nuxt.config.js +++ b/examples/uikit/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { css: ['uikit/dist/css/uikit.css'], plugins: [ { src: '~/plugins/uikit.js', ssr: false } diff --git a/examples/vue-apollo/nuxt.config.js b/examples/vue-apollo/nuxt.config.js index bdf96f2a93..1530134236 100644 --- a/examples/vue-apollo/nuxt.config.js +++ b/examples/vue-apollo/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { modules: ['@nuxtjs/apollo'], apollo: { networkInterfaces: { diff --git a/examples/vue-chartjs/nuxt.config.js b/examples/vue-chartjs/nuxt.config.js index 6bb371ac07..1b67d5a07b 100644 --- a/examples/vue-chartjs/nuxt.config.js +++ b/examples/vue-chartjs/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { head: { title: 'Nuxt.js + Vue-ChartJS', meta: [ diff --git a/examples/vue-class-component/nuxt.config.js b/examples/vue-class-component/nuxt.config.js index 4d32a9ca0a..1319871f8b 100644 --- a/examples/vue-class-component/nuxt.config.js +++ b/examples/vue-class-component/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { build: { babel: { plugins: ['transform-decorators-legacy', 'transform-class-properties'] diff --git a/examples/vuex-persistedstate/nuxt.config.js b/examples/vuex-persistedstate/nuxt.config.js index 274248d91b..e5e23be598 100644 --- a/examples/vuex-persistedstate/nuxt.config.js +++ b/examples/vuex-persistedstate/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { /* ** We set `spa` mode to have only client-side rendering */ diff --git a/examples/with-amp/nuxt.config.js b/examples/with-amp/nuxt.config.js index 6ae265293c..0a706c0042 100644 --- a/examples/with-amp/nuxt.config.js +++ b/examples/with-amp/nuxt.config.js @@ -8,7 +8,7 @@ const modifyHtml = (html) => { html = html.replace('', ampScript + '') return html } -module.exports = { +export default { head: { meta: [ { charset: 'utf-8' }, diff --git a/examples/with-buefy/nuxt.config.js b/examples/with-buefy/nuxt.config.js index 8b53395980..06cc234cad 100644 --- a/examples/with-buefy/nuxt.config.js +++ b/examples/with-buefy/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { /* ** Customize the progress bar color */ diff --git a/examples/with-cookies/nuxt.config.js b/examples/with-cookies/nuxt.config.js index f5d66e70ce..339699b0aa 100644 --- a/examples/with-cookies/nuxt.config.js +++ b/examples/with-cookies/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { head: { title: 'Nuxt-Cookies', meta: [ diff --git a/examples/with-element-ui/nuxt.config.js b/examples/with-element-ui/nuxt.config.js index e53632dade..29fd3a0b7e 100644 --- a/examples/with-element-ui/nuxt.config.js +++ b/examples/with-element-ui/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { /* ** Global CSS */ diff --git a/examples/with-feathers/nuxt.config.js b/examples/with-feathers/nuxt.config.js index 1fec96a57b..5fadcc875c 100644 --- a/examples/with-feathers/nuxt.config.js +++ b/examples/with-feathers/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { loading: { color: 'purple' } diff --git a/examples/with-feathers/src/app.js b/examples/with-feathers/src/app.js index 6f0e8103dd..c8d255a220 100644 --- a/examples/with-feathers/src/app.js +++ b/examples/with-feathers/src/app.js @@ -1,16 +1,14 @@ -'use strict' - -const path = require('path') -const compress = require('compression') -const cors = require('cors') -const feathers = require('feathers') -const configuration = require('feathers-configuration') -const hooks = require('feathers-hooks') -const rest = require('feathers-rest') -const bodyParser = require('body-parser') -const socketio = require('feathers-socketio') -const middleware = require('./middleware') -const services = require('./services') +import path from 'path' +import compress from 'compression' +import cors from 'cors' +import feathers from 'feathers' +import configuration from 'feathers-configuration' +import hooks from 'feathers-hooks' +import rest from 'feathers-rest' +import bodyParser from 'body-parser' +import socketio from 'feathers-socketio' +import middleware from './middleware' +import services from './services' const app = feathers() @@ -27,4 +25,4 @@ app.use(compress()) .configure(services) .configure(middleware) -module.exports = app +export default app diff --git a/examples/with-feathers/src/hooks/index.js b/examples/with-feathers/src/hooks/index.js index 5489242974..9f64020c75 100644 --- a/examples/with-feathers/src/hooks/index.js +++ b/examples/with-feathers/src/hooks/index.js @@ -1,12 +1,10 @@ -'use strict' - // Add any common hooks you want to share across services in here. // // Below is an example of how a hook is written and exported. Please // see http://docs.feathersjs.com/hooks/readme.html for more details // on hooks. -exports.myHook = function (options) { +export function myHook(options) { return function (hook) { console.log('My custom global hook ran. Feathers is awesome!') // eslint-disable-line no-console } diff --git a/examples/with-feathers/src/index.js b/examples/with-feathers/src/index.js index 011d14d1cb..07d0202e1b 100644 --- a/examples/with-feathers/src/index.js +++ b/examples/with-feathers/src/index.js @@ -1,6 +1,5 @@ -'use strict' +import app from './app' -const app = require('./app') const port = app.get('port') process.on('nuxt:build:done', (err) => { diff --git a/examples/with-feathers/src/middleware/index.js b/examples/with-feathers/src/middleware/index.js index c572b6b5cd..64a383c6e1 100644 --- a/examples/with-feathers/src/middleware/index.js +++ b/examples/with-feathers/src/middleware/index.js @@ -1,8 +1,6 @@ -'use strict' +import nuxt from './nuxt' -const nuxt = require('./nuxt') - -module.exports = function () { +export default function () { // Add your custom middleware here. Remember, that // just like Express the order matters, so error // handling middleware should go last. diff --git a/examples/with-feathers/src/middleware/nuxt.js b/examples/with-feathers/src/middleware/nuxt.js index c389b9f259..91f809aa6e 100644 --- a/examples/with-feathers/src/middleware/nuxt.js +++ b/examples/with-feathers/src/middleware/nuxt.js @@ -1,5 +1,5 @@ -const resolve = require('path').resolve -const { Nuxt, Builder } = require('nuxt') +import { resolve } from 'path' +import { Nuxt, Builder } from 'nuxt' // Setup nuxt.js let config = {} @@ -18,6 +18,6 @@ if (config.dev) { } // Add nuxt.js middleware -module.exports = function (req, res) { +export default function (req, res) { nuxt.render(req, res) } diff --git a/examples/with-feathers/src/services/authentication/index.js b/examples/with-feathers/src/services/authentication/index.js index 84665c7e9b..453db60b8b 100644 --- a/examples/with-feathers/src/services/authentication/index.js +++ b/examples/with-feathers/src/services/authentication/index.js @@ -1,8 +1,6 @@ -'use strict' +import authentication from 'feathers-authentication' -const authentication = require('feathers-authentication') - -module.exports = function () { +export default function () { const app = this let config = app.get('auth') diff --git a/examples/with-feathers/src/services/index.js b/examples/with-feathers/src/services/index.js index b481d8ebf8..a09ac9b374 100644 --- a/examples/with-feathers/src/services/index.js +++ b/examples/with-feathers/src/services/index.js @@ -1,8 +1,7 @@ -'use strict' -const authentication = require('./authentication') -const user = require('./user') +import authentication from './authentication' +import user from './user' -module.exports = function () { +export default function () { const app = this app.configure(authentication) diff --git a/examples/with-feathers/src/services/user/hooks/index.js b/examples/with-feathers/src/services/user/hooks/index.js index 48bc62acd9..3ecc6e074d 100644 --- a/examples/with-feathers/src/services/user/hooks/index.js +++ b/examples/with-feathers/src/services/user/hooks/index.js @@ -1,8 +1,7 @@ -'use strict' +import hooks from 'feathers-hooks' +import { hooks as auth } from 'feathers-authentication' require('../../../hooks') -const hooks = require('feathers-hooks') -const auth = require('feathers-authentication').hooks exports.before = { all: [], diff --git a/examples/with-feathers/src/services/user/index.js b/examples/with-feathers/src/services/user/index.js index 2ecf62873c..f84ec580a8 100644 --- a/examples/with-feathers/src/services/user/index.js +++ b/examples/with-feathers/src/services/user/index.js @@ -1,11 +1,9 @@ -'use strict' +import path from 'path' +import NeDB from 'nedb' +import service from 'feathers-nedb' +import hooks from './hooks' -const path = require('path') -const NeDB = require('nedb') -const service = require('feathers-nedb') -const hooks = require('./hooks') - -module.exports = function () { +export default function () { const app = this const db = new NeDB({ diff --git a/examples/with-feathers/test/app.test.js b/examples/with-feathers/test/app.test.js index 60e1e30d63..f7f621363b 100644 --- a/examples/with-feathers/test/app.test.js +++ b/examples/with-feathers/test/app.test.js @@ -1,8 +1,6 @@ -'use strict' - -const assert = require('assert') -const request = require('request') -const app = require('../src/app') +import assert from 'assert' +import request from 'request' +import app from '../src/app' describe('Feathers application tests', function () { before(function (done) { diff --git a/examples/with-feathers/test/services/user/index.test.js b/examples/with-feathers/test/services/user/index.test.js index 2695b85eb1..d6b4df6264 100644 --- a/examples/with-feathers/test/services/user/index.test.js +++ b/examples/with-feathers/test/services/user/index.test.js @@ -1,7 +1,5 @@ -'use strict' - -const assert = require('assert') -const app = require('../../../src/app') +import assert from 'assert' +import app from '../../../src/app' describe('user service', function () { it('registered the users service', () => { diff --git a/examples/with-firebase/nuxt.config.js b/examples/with-firebase/nuxt.config.js index 3ea4943aba..ddb39cc360 100644 --- a/examples/with-firebase/nuxt.config.js +++ b/examples/with-firebase/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { head: { meta: [ { charset: 'utf-8' }, diff --git a/examples/with-museui/nuxt.config.js b/examples/with-museui/nuxt.config.js index 55a86f08c1..1c13f5c91b 100644 --- a/examples/with-museui/nuxt.config.js +++ b/examples/with-museui/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { head: { meta: [ { diff --git a/examples/with-purgecss/nuxt.config.js b/examples/with-purgecss/nuxt.config.js index 0c5335c106..86da6d8683 100644 --- a/examples/with-purgecss/nuxt.config.js +++ b/examples/with-purgecss/nuxt.config.js @@ -1,6 +1,6 @@ -const path = require('path') -const PurgecssPlugin = require('purgecss-webpack-plugin') -const glob = require('glob-all') +import path from 'path' +import PurgecssPlugin from 'purgecss-webpack-plugin' +import glob from 'glob-all' class TailwindExtractor { static extract(content) { @@ -8,7 +8,7 @@ class TailwindExtractor { } } -module.exports = { +export default { build: { extractCSS: true, postcss: [ diff --git a/examples/with-purgecss/tailwind.js b/examples/with-purgecss/tailwind.js index 9a4af76aba..040b3a7fbe 100644 --- a/examples/with-purgecss/tailwind.js +++ b/examples/with-purgecss/tailwind.js @@ -127,7 +127,7 @@ var colors = { 'pink-lightest': '#ffebef' } -module.exports = { +export default { /* |----------------------------------------------------------------------------- diff --git a/examples/with-sockets/io/index.js b/examples/with-sockets/io/index.js index b9bf2364e0..636167e435 100644 --- a/examples/with-sockets/io/index.js +++ b/examples/with-sockets/io/index.js @@ -1,7 +1,10 @@ -module.exports = function () { - const server = require('http').createServer(this.nuxt.renderer.app) - const io = require('socket.io')(server) +import http from 'http' +import socketIO from 'socket.io' +const server = http.createServer(this.nuxt.renderer.app) +const io = socketIO(server) + +export default function () { // overwrite nuxt.listen() this.nuxt.listen = (port, host) => new Promise((resolve) => server.listen(port || 3000, host || 'localhost', resolve)) // close this server on 'close' event diff --git a/examples/with-sockets/nuxt.config.js b/examples/with-sockets/nuxt.config.js index 34e2ec30a1..538c237f8f 100644 --- a/examples/with-sockets/nuxt.config.js +++ b/examples/with-sockets/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { head: { meta: [ { charset: 'utf-8' }, diff --git a/examples/with-sockets/server.js b/examples/with-sockets/server.js index 1cd396440d..017d62a609 100644 --- a/examples/with-sockets/server.js +++ b/examples/with-sockets/server.js @@ -1,10 +1,15 @@ -const { Nuxt, Builder } = require('nuxt') -const app = require('express')() -const server = require('http').createServer(app) -const io = require('socket.io')(server) +import { Nuxt, Builder } from 'nuxt' +import express from 'express' +import http from 'http' +import SocketIO from 'socket.io' + const port = process.env.PORT || 3000 const isProd = process.env.NODE_ENV === 'production' +const app = express() +const server = http.createServer(app) +const io = SocketIO(server) + // We instantiate Nuxt.js with the options let config = require('./nuxt.config.js') config.dev = !isProd diff --git a/examples/with-tape/test/setup.js b/examples/with-tape/test/setup.js index 69cf3aa353..c193cfd102 100644 --- a/examples/with-tape/test/setup.js +++ b/examples/with-tape/test/setup.js @@ -1,4 +1,4 @@ -const hooks = require('require-extension-hooks') +import hooks from 'require-extension-hooks' // Setup browser environment require('browser-env')() diff --git a/examples/with-vue-material/nuxt.config.js b/examples/with-vue-material/nuxt.config.js index 38d84fe8c0..c62c272b75 100644 --- a/examples/with-vue-material/nuxt.config.js +++ b/examples/with-vue-material/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { head: { meta: [ { diff --git a/examples/with-vuetify/nuxt.config.js b/examples/with-vuetify/nuxt.config.js index 1f03dd3738..6164300a33 100644 --- a/examples/with-vuetify/nuxt.config.js +++ b/examples/with-vuetify/nuxt.config.js @@ -1,6 +1,6 @@ -const nodeExternals = require('webpack-node-externals') +import nodeExternals from 'webpack-node-externals' -module.exports = { +export default { /* ** Head elements ** Add Roboto font and Material Icons diff --git a/examples/with-vux/nuxt.config.js b/examples/with-vux/nuxt.config.js index ff07ba04b9..a2133ab74a 100644 --- a/examples/with-vux/nuxt.config.js +++ b/examples/with-vux/nuxt.config.js @@ -1,7 +1,7 @@ -const vuxLoader = require('vux-loader') -const path = require('path') +import vuxLoader from 'vux-loader' +import path from 'path' -module.exports = { +export default { head: { meta: [ { charset: 'utf-8' }, diff --git a/lib/builder/builder.js b/lib/builder/builder.js index 9bcd83499f..f29a3d5a38 100644 --- a/lib/builder/builder.js +++ b/lib/builder/builder.js @@ -1,29 +1,29 @@ -const { promisify } = require('util') -const _ = require('lodash') -const chokidar = require('chokidar') -const { remove, readFile, writeFile, mkdirp, existsSync } = require('fs-extra') -const fs = require('fs') -const hash = require('hash-sum') -const webpack = require('webpack') -const serialize = require('serialize-javascript') -const { join, resolve, basename, extname, dirname } = require('path') -const MFS = require('memory-fs') -const webpackDevMiddleware = require('webpack-dev-middleware') -const webpackHotMiddleware = require('webpack-hot-middleware') -const Debug = require('debug') -const Glob = require('glob') -const { r, wp, wChunk, createRoutes, parallel, relativeTo, waitFor, createSpinner } = require('../common/utils') -const { Options } = require('../common') -const clientWebpackConfig = require('./webpack/client.config.js') -const serverWebpackConfig = require('./webpack/server.config.js') -const upath = require('upath') +import { promisify } from 'util' +import _ from 'lodash' +import chokidar from 'chokidar' +import { remove, readFile, writeFile, mkdirp, existsSync } from 'fs-extra' +import fs from 'fs' +import hash from 'hash-sum' +import webpack from 'webpack' +import serialize from 'serialize-javascript' +import { join, resolve, basename, extname, dirname } from 'path' +import MFS from 'memory-fs' +import webpackDevMiddleware from 'webpack-dev-middleware' +import webpackHotMiddleware from 'webpack-hot-middleware' +import Debug from 'debug' +import Glob from 'glob' +import { r, wp, wChunk, createRoutes, parallel, relativeTo, waitFor, createSpinner } from '../common/utils' +import Options from '../common/options' +import clientWebpackConfig from './webpack/client.config.js' +import serverWebpackConfig from './webpack/server.config.js' +import upath from 'upath' const debug = Debug('nuxt:build') debug.color = 2 // Force green color const glob = promisify(Glob) -module.exports = class Builder { +export default class Builder { constructor(nuxt) { this.nuxt = nuxt this.isStatic = false // Flag to know if the build is for a generated app @@ -156,7 +156,7 @@ module.exports = class Builder { if (!options.babelrc && !options.presets) { options.presets = [ [ - require.resolve('babel-preset-vue-app'), + 'babel-preset-vue-app', { targets: isServer ? { node: '8.0.0' } : { ie: 9, uglify: true } } @@ -648,7 +648,7 @@ module.exports = class Builder { const options = _.omit(this.options, Options.unsafeKeys) await writeFile( config, - `module.exports = ${JSON.stringify(options, null, ' ')}`, + `export default ${JSON.stringify(options, null, ' ')}`, 'utf8' ) } diff --git a/lib/builder/generator.js b/lib/builder/generator.js index f01bd6522b..758d8e6b77 100644 --- a/lib/builder/generator.js +++ b/lib/builder/generator.js @@ -1,26 +1,11 @@ -const { - copy, - remove, - writeFile, - mkdirp, - removeSync, - existsSync -} = require('fs-extra') -const _ = require('lodash') -const { resolve, join, dirname, sep } = require('path') -const { minify } = require('html-minifier') -const Chalk = require('chalk') -const { printWarn, createSpinner } = require('../common/utils') +import _ from 'lodash' +import { resolve, join, dirname, sep } from 'path' +import { minify } from 'html-minifier' +import Chalk from 'chalk' +import { copy, remove, writeFile, mkdirp, removeSync, existsSync } from 'fs-extra' +import { isUrl, promisifyRoute, waitFor, flatRoutes, pe, printWarn, createSpinner } from '../common/utils' -const { - isUrl, - promisifyRoute, - waitFor, - flatRoutes, - pe -} = require('../common/utils') - -module.exports = class Generator { +export default class Generator { constructor(nuxt, builder) { this.nuxt = nuxt this.options = nuxt.options diff --git a/lib/builder/index.js b/lib/builder/index.js index fc3309238b..34547d0c2a 100644 --- a/lib/builder/index.js +++ b/lib/builder/index.js @@ -1,7 +1,7 @@ -const Builder = require('./builder') -const Generator = require('./generator') +import Builder from './builder' +import Generator from './generator' -module.exports = { +export default { Builder, Generator } diff --git a/lib/builder/webpack/base.config.js b/lib/builder/webpack/base.config.js index 40747820b5..b60e72eaaa 100644 --- a/lib/builder/webpack/base.config.js +++ b/lib/builder/webpack/base.config.js @@ -1,16 +1,16 @@ -const ExtractTextPlugin = require('extract-text-webpack-plugin') -const TimeFixPlugin = require('time-fix-plugin') -const WarnFixPlugin = require('./plugins/warnfix') -const ProgressPlugin = require('./plugins/progress') +import ExtractTextPlugin from 'extract-text-webpack-plugin' +import TimeFixPlugin from 'time-fix-plugin' +import WarnFixPlugin from './plugins/warnfix' +import ProgressPlugin from './plugins/progress' -const webpack = require('webpack') -const { cloneDeep } = require('lodash') -const { join, resolve } = require('path') +import webpack from 'webpack' +import { cloneDeep } from 'lodash' +import { join, resolve } from 'path' -const { isUrl, urlJoin } = require('../../common/utils') +import { isUrl, urlJoin } from '../../common/utils' -const vueLoader = require('./vue-loader') -const styleLoader = require('./style-loader') +import vueLoader from './vue-loader' +import styleLoader from './style-loader' /* |-------------------------------------------------------------------------- @@ -20,7 +20,7 @@ const styleLoader = require('./style-loader') | webpack config files |-------------------------------------------------------------------------- */ -module.exports = function webpackBaseConfig({ name, isServer }) { +export default function webpackBaseConfig({ name, isServer }) { // Prioritize nested node_modules in webpack search path (#2558) const webpackModulesDir = ['node_modules'].concat(this.options.modulesDir) diff --git a/lib/builder/webpack/client.config.js b/lib/builder/webpack/client.config.js index 004e9628f4..4163a21e15 100644 --- a/lib/builder/webpack/client.config.js +++ b/lib/builder/webpack/client.config.js @@ -1,19 +1,19 @@ -const { each } = require('lodash') -const webpack = require('webpack') -// const VueSSRClientPlugin = require('vue-server-renderer/client-plugin') -const VueSSRClientPlugin = require('./plugins/vue/client') -const HTMLPlugin = require('html-webpack-plugin') -const FriendlyErrorsWebpackPlugin = require('friendly-errors-webpack-plugin') -const StylishPlugin = require('webpack-stylish') -const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer') -const { resolve } = require('path') -const Debug = require('debug') -const base = require('./base.config.js') +import { each } from 'lodash' +import webpack from 'webpack' +// import VueSSRClientPlugin from 'vue-server-renderer/client-plugin' +import VueSSRClientPlugin from './plugins/vue/client' +import HTMLPlugin from 'html-webpack-plugin' +import FriendlyErrorsWebpackPlugin from 'friendly-errors-webpack-plugin' +import StylishPlugin from 'webpack-stylish' +import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer' +import { resolve } from 'path' +import Debug from 'debug' +import base from './base.config.js' const debug = Debug('nuxt:build') debug.color = 2 // Force green color -module.exports = function webpackClientConfig() { +export default function webpackClientConfig() { let config = base.call(this, { name: 'client', isServer: false }) // Entry points diff --git a/lib/builder/webpack/plugins/progress.js b/lib/builder/webpack/plugins/progress.js index 48e47645ec..8cb8361706 100644 --- a/lib/builder/webpack/plugins/progress.js +++ b/lib/builder/webpack/plugins/progress.js @@ -1,12 +1,12 @@ -const webpack = require('webpack') -const chalk = require('chalk') -const _ = require('lodash') +import webpack from 'webpack' +import chalk from 'chalk' +import _ from 'lodash' const sharedState = {} const BLOCK_CHAR = '█' -module.exports = class ProgressPlugin extends webpack.ProgressPlugin { +export default class ProgressPlugin extends webpack.ProgressPlugin { constructor(options) { super(options) diff --git a/lib/builder/webpack/plugins/vue/client.js b/lib/builder/webpack/plugins/vue/client.js index 76fcad5ed2..ffc8a8e0d5 100644 --- a/lib/builder/webpack/plugins/vue/client.js +++ b/lib/builder/webpack/plugins/vue/client.js @@ -1,8 +1,8 @@ -const hash = require('hash-sum') -const uniq = require('lodash.uniq') -const { isJS, onEmit } = require('./util') +import hash from 'hash-sum' +import uniq from 'lodash.uniq' +import { isJS, onEmit } from './util' -module.exports = class VueSSRClientPlugin { +export default class VueSSRClientPlugin { constructor(options = {}) { this.options = Object.assign({ filename: 'vue-ssr-client-manifest.json' diff --git a/lib/builder/webpack/plugins/vue/server.js b/lib/builder/webpack/plugins/vue/server.js index e3cc74940a..7c539d5399 100644 --- a/lib/builder/webpack/plugins/vue/server.js +++ b/lib/builder/webpack/plugins/vue/server.js @@ -1,6 +1,6 @@ -const { validate, isJS, onEmit } = require('./util') +import { validate, isJS, onEmit } from './util' -module.exports = class VueSSRServerPlugin { +export default class VueSSRServerPlugin { constructor(options = {}) { this.options = Object.assign({ filename: 'vue-ssr-server-bundle.json' diff --git a/lib/builder/webpack/plugins/vue/util.js b/lib/builder/webpack/plugins/vue/util.js index 0f5377946a..fb58bc0bac 100644 --- a/lib/builder/webpack/plugins/vue/util.js +++ b/lib/builder/webpack/plugins/vue/util.js @@ -1,10 +1,10 @@ -const { red, yellow } = require('chalk') +import chalk from 'chalk' const prefix = `[vue-server-renderer-webpack-plugin]` -const warn = exports.warn = msg => console.error(red(`${prefix} ${msg}\n`)) // eslint-disable-line no-console -const tip = exports.tip = msg => console.log(yellow(`${prefix} ${msg}\n`)) // eslint-disable-line no-console +export const warn = msg => console.error(chalk.red(`${prefix} ${msg}\n`)) // eslint-disable-line no-console +export const tip = msg => console.log(chalk.yellow(`${prefix} ${msg}\n`)) // eslint-disable-line no-console -exports.validate = compiler => { +export const validate = compiler => { if (compiler.options.target !== 'node') { warn('webpack config `target` should be "node".') } @@ -21,7 +21,7 @@ exports.validate = compiler => { } } -exports.onEmit = (compiler, name, hook) => { +export const onEmit = (compiler, name, hook) => { if (compiler.hooks) { // Webpack >= 4.0.0 compiler.hooks.emit.tap(name, @@ -38,6 +38,6 @@ exports.onEmit = (compiler, name, hook) => { } } -exports.isJS = (file) => /\.js(\?[^.]+)?$/.test(file) +export const isJS = (file) => /\.js(\?[^.]+)?$/.test(file) -exports.isCSS = (file) => /\.css(\?[^.]+)?$/.test(file) +export const isCSS = (file) => /\.css(\?[^.]+)?$/.test(file) diff --git a/lib/builder/webpack/plugins/warnfix.js b/lib/builder/webpack/plugins/warnfix.js index c15ea0034f..cb74bd0062 100644 --- a/lib/builder/webpack/plugins/warnfix.js +++ b/lib/builder/webpack/plugins/warnfix.js @@ -1,4 +1,4 @@ -module.exports = class WarnFixPlugin { +export default class WarnFixPlugin { apply(compiler) /* istanbul ignore next */ { compiler.hooks.done.tap('warnfix-plugin', stats => { stats.compilation.warnings = stats.compilation.warnings.filter(warn => { diff --git a/lib/builder/webpack/postcss.js b/lib/builder/webpack/postcss.js index 8acf8b3cf5..a8488d996a 100644 --- a/lib/builder/webpack/postcss.js +++ b/lib/builder/webpack/postcss.js @@ -1,10 +1,10 @@ -const { existsSync } = require('fs') -const { resolve, join } = require('path') -const { cloneDeep } = require('lodash') -const { isPureObject } = require('../../common/utils') -const createResolver = require('postcss-import-resolver') +import { existsSync } from 'fs' +import { resolve, join } from 'path' +import { cloneDeep } from 'lodash' +import { isPureObject } from '../../common/utils' +import createResolver from 'postcss-import-resolver' -module.exports = function postcssConfig() { +export default function postcssConfig() { let config = cloneDeep(this.options.build.postcss) /* istanbul ignore if */ @@ -78,7 +78,7 @@ module.exports = function postcssConfig() { if (isPureObject(config) && isPureObject(config.plugins)) { config.plugins = Object.keys(config.plugins) .map(p => { - const plugin = require(this.nuxt.resolvePath(p)) + const plugin = this.nuxt.requireModule(p) const opts = config.plugins[p] if (opts === false) return // Disabled const instance = plugin(opts) diff --git a/lib/builder/webpack/server.config.js b/lib/builder/webpack/server.config.js index 25f0017cd0..d91b146828 100644 --- a/lib/builder/webpack/server.config.js +++ b/lib/builder/webpack/server.config.js @@ -1,18 +1,18 @@ -const webpack = require('webpack') -// const VueSSRServerPlugin = require('vue-server-renderer/server-plugin') -const VueSSRServerPlugin = require('./plugins/vue/server') -const nodeExternals = require('webpack-node-externals') -const { each } = require('lodash') -const { resolve } = require('path') -const { existsSync } = require('fs') -const base = require('./base.config.js') +import webpack from 'webpack' +// import VueSSRServerPlugin from 'vue-server-renderer/server-plugin' +import VueSSRServerPlugin from './plugins/vue/server' +import nodeExternals from 'webpack-node-externals' +import { each } from 'lodash' +import { resolve } from 'path' +import { existsSync } from 'fs' +import base from './base.config.js' /* |-------------------------------------------------------------------------- | Webpack Server Config |-------------------------------------------------------------------------- */ -module.exports = function webpackServerConfig() { +export default function webpackServerConfig() { let config = base.call(this, { name: 'server', isServer: true }) // Env object defined in nuxt.config.js diff --git a/lib/builder/webpack/style-loader.js b/lib/builder/webpack/style-loader.js index ba3a463a12..9c5e2b500e 100644 --- a/lib/builder/webpack/style-loader.js +++ b/lib/builder/webpack/style-loader.js @@ -1,8 +1,8 @@ -const ExtractTextPlugin = require('extract-text-webpack-plugin') -const { join } = require('path') -const postcssConfig = require('./postcss') +import ExtractTextPlugin from 'extract-text-webpack-plugin' +import { join } from 'path' +import postcssConfig from './postcss' -module.exports = function styleLoader(ext, loaders = [], isVueLoader = false) { +export default function styleLoader(ext, loaders = [], isVueLoader = false) { const sourceMap = Boolean(this.options.build.cssSourceMap) // Normalize loaders diff --git a/lib/builder/webpack/vue-loader.js b/lib/builder/webpack/vue-loader.js index e31fae130d..f426c7df17 100644 --- a/lib/builder/webpack/vue-loader.js +++ b/lib/builder/webpack/vue-loader.js @@ -1,7 +1,7 @@ -const postcssConfig = require('./postcss') -const styleLoader = require('./style-loader') +import postcssConfig from './postcss' +import styleLoader from './style-loader' -module.exports = function vueLoader({ isServer }) { +export default function vueLoader({ isServer }) { // https://vue-loader.vuejs.org/en const config = { postcss: postcssConfig.call(this), diff --git a/lib/common/index.js b/lib/common/index.js deleted file mode 100644 index 3a241c30d1..0000000000 --- a/lib/common/index.js +++ /dev/null @@ -1,7 +0,0 @@ -const Utils = require('./utils') -const Options = require('./options') - -module.exports = { - Utils, - Options -} diff --git a/lib/common/module.js b/lib/common/module.js new file mode 100644 index 0000000000..8376ee110b --- /dev/null +++ b/lib/common/module.js @@ -0,0 +1,8 @@ +const esm = require('esm') + +const _esm = esm(module, {}) + +exports.requireModule = function requireModule() { + const m = _esm.apply(this, arguments) + return (m && m.default) || m +} diff --git a/lib/common/options.js b/lib/common/options.js index c91d333183..d02782fc83 100644 --- a/lib/common/options.js +++ b/lib/common/options.js @@ -1,15 +1,15 @@ -const _ = require('lodash') -const Debug = require('debug') -const { join, resolve } = require('path') -const { existsSync, readdirSync } = require('fs') -const { isUrl, isPureObject } = require('../common/utils') +import _ from 'lodash' +import Debug from 'debug' +import { join, resolve } from 'path' +import { existsSync, readdirSync } from 'fs' +import { isUrl, isPureObject } from '../common/utils' const debug = Debug('nuxt:build') debug.color = 2 // Force green color const Options = {} -module.exports = Options +export default Options Options.from = function (_options) { // Clone options to prevent unwanted side-effects diff --git a/lib/common/utils.js b/lib/common/utils.js index 07a7507b65..e61f8e0087 100644 --- a/lib/common/utils.js +++ b/lib/common/utils.js @@ -1,35 +1,35 @@ -const { resolve, relative, sep } = require('path') -const _ = require('lodash') -const PrettyError = require('pretty-error') -const Chalk = require('chalk') -const ORA = require('ora') +import { resolve, relative, sep } from 'path' +import _ from 'lodash' +import PrettyError from 'pretty-error' +import Chalk from 'chalk' +import ORA from 'ora' -exports.pe = new PrettyError() +export const pe = new PrettyError() -exports.printWarn = function (msg, from) { +export const printWarn = function (msg, from) { /* eslint-disable no-console */ const fromStr = from ? Chalk.yellow(` ${from}\n\n`) : ' ' console.warn('\n' + Chalk.bgYellow.black(' WARN ') + fromStr + msg + '\n') } -exports.renderError = function (_error, from) { - const errStr = exports.pe.render(_error) +export const renderError = function (_error, from) { + const errStr = pe.render(_error) const fromStr = from ? Chalk.red(` ${from}`) : '' return '\n' + Chalk.bgRed.black(' ERROR ') + fromStr + '\n\n' + errStr } -exports.printError = function () { +export const printError = function () { /* eslint-disable no-console */ - console.error(exports.renderError(...arguments)) + console.error(renderError(...arguments)) } -exports.fatalError = function () { +export const fatalError = function () { /* eslint-disable no-console */ - console.error(exports.renderError(...arguments)) + console.error(renderError(...arguments)) process.exit(1) } -exports.createSpinner = function () { +export const createSpinner = function () { return new ORA({ color: 'green', spinner: 'clock', @@ -37,15 +37,15 @@ exports.createSpinner = function () { }) } -exports.encodeHtml = function encodeHtml(str) { +export const encodeHtml = function encodeHtml(str) { return str.replace(//g, '>') } -exports.getContext = function getContext(req, res) { +export const getContext = function getContext(req, res) { return { req, res } } -exports.setAnsiColors = function setAnsiColors(ansiHTML) { +export const setAnsiColors = function setAnsiColors(ansiHTML) { ansiHTML.setColors({ reset: ['efefef', 'a6004c'], darkgrey: '5a012b', @@ -58,7 +58,7 @@ exports.setAnsiColors = function setAnsiColors(ansiHTML) { }) } -exports.waitFor = function waitFor(ms) { +export const waitFor = function waitFor(ms) { return new Promise(resolve => setTimeout(resolve, ms || 0)) } @@ -76,9 +76,7 @@ async function promiseFinally(fn, finalFn) { return result } -exports.promiseFinally = promiseFinally - -exports.timeout = function timeout(fn, ms, msg) { +export const timeout = function timeout(fn, ms, msg) { let timerId const warpPromise = promiseFinally(fn, () => clearTimeout(timerId)) const timerPromise = new Promise((resolve, reject) => { @@ -87,7 +85,7 @@ exports.timeout = function timeout(fn, ms, msg) { return Promise.race([warpPromise, timerPromise]) } -exports.urlJoin = function urlJoin() { +export const urlJoin = function urlJoin() { return [].slice .call(arguments) .join('/') @@ -95,11 +93,11 @@ exports.urlJoin = function urlJoin() { .replace(':/', '://') } -exports.isUrl = function isUrl(url) { +export const isUrl = function isUrl(url) { return url.indexOf('http') === 0 || url.indexOf('//') === 0 } -exports.promisifyRoute = function promisifyRoute(fn, ...args) { +export const promisifyRoute = function promisifyRoute(fn, ...args) { // If routes is an array if (Array.isArray(fn)) { return Promise.resolve(fn) @@ -125,18 +123,18 @@ exports.promisifyRoute = function promisifyRoute(fn, ...args) { return promise } -exports.sequence = function sequence(tasks, fn) { +export const sequence = function sequence(tasks, fn) { return tasks.reduce( (promise, task) => promise.then(() => fn(task)), Promise.resolve() ) } -exports.parallel = function parallel(tasks, fn) { +export const parallel = function parallel(tasks, fn) { return Promise.all(tasks.map(task => fn(task))) } -exports.chainFn = function chainFn(base, fn) { +export const chainFn = function chainFn(base, fn) { /* istanbul ignore if */ if (!(fn instanceof Function)) { return @@ -163,21 +161,21 @@ exports.chainFn = function chainFn(base, fn) { } } -exports.isPureObject = function isPureObject(o) { +export const isPureObject = function isPureObject(o) { return !Array.isArray(o) && typeof o === 'object' } -const isWindows = (exports.isWindows = /^win/.test(process.platform)) +export const isWindows = /^win/.test(process.platform) -const wp = (exports.wp = function wp(p = '') { +export const wp = function wp(p = '') { /* istanbul ignore if */ if (isWindows) { return p.replace(/\\/g, '\\\\') } return p -}) +} -exports.wChunk = function wChunk(p = '') { +export const wChunk = function wChunk(p = '') { /* istanbul ignore if */ if (isWindows) { return p.replace(/\//g, '_') @@ -189,7 +187,7 @@ const reqSep = /\//g const sysSep = _.escapeRegExp(sep) const normalize = string => string.replace(reqSep, sysSep) -const r = (exports.r = function r() { +export const r = function r() { let args = Array.prototype.slice.apply(arguments) let lastArg = _.last(args) @@ -198,9 +196,9 @@ const r = (exports.r = function r() { } return wp(resolve(...args.map(normalize))) -}) +} -exports.relativeTo = function relativeTo() { +export const relativeTo = function relativeTo() { let args = Array.prototype.slice.apply(arguments) let dir = args.shift() @@ -220,7 +218,7 @@ exports.relativeTo = function relativeTo() { return wp(rp) } -exports.flatRoutes = function flatRoutes(router, path = '', routes = []) { +export const flatRoutes = function flatRoutes(router, path = '', routes = []) { router.forEach(r => { if (!r.path.includes(':') && !r.path.includes('*')) { /* istanbul ignore if */ @@ -288,7 +286,7 @@ function cleanChildrenRoutes(routes, isChild = false) { return routes } -exports.createRoutes = function createRoutes(files, srcDir, pagesDir) { +export const createRoutes = function createRoutes(files, srcDir, pagesDir) { let routes = [] files.forEach(file => { let keys = file diff --git a/lib/core/index.js b/lib/core/index.js index b4e0d1399a..282238f0d2 100644 --- a/lib/core/index.js +++ b/lib/core/index.js @@ -1,12 +1,9 @@ -const { Options, Utils } = require('../common') -const Module = require('./module') -const Nuxt = require('./nuxt') -const Renderer = require('./renderer') +import Module from './module' +import Nuxt from './nuxt' +import Renderer from './renderer' -module.exports = { +export default { Nuxt, Module, - Renderer, - Options, - Utils + Renderer } diff --git a/lib/core/meta.js b/lib/core/meta.js index 28af4a63a9..2915fbdb15 100644 --- a/lib/core/meta.js +++ b/lib/core/meta.js @@ -1,9 +1,9 @@ -const Vue = require('vue') -const VueMeta = require('vue-meta') -const VueServerRenderer = require('vue-server-renderer') -const LRU = require('lru-cache') +import Vue from 'vue' +import VueMeta from 'vue-meta' +import VueServerRenderer from 'vue-server-renderer' +import LRU from 'lru-cache' -module.exports = class MetaRenderer { +export default class MetaRenderer { constructor(nuxt, renderer) { this.nuxt = nuxt this.renderer = renderer diff --git a/lib/core/middleware/error.js b/lib/core/middleware/error.js index 53b6b8f180..3b528992d6 100644 --- a/lib/core/middleware/error.js +++ b/lib/core/middleware/error.js @@ -1,8 +1,8 @@ -const Youch = require('@nuxtjs/youch') -const { join, resolve, relative, isAbsolute } = require('path') -const { readFile } = require('fs-extra') +import Youch from '@nuxtjs/youch' +import { join, resolve, relative, isAbsolute } from 'path' +import { readFile } from 'fs-extra' -module.exports = function errorMiddleware(err, req, res, next) { +export default function errorMiddleware(err, req, res, next) { // ensure statusCode, message and name fields err.statusCode = err.statusCode || 500 err.message = err.message || 'Nuxt Server Error' diff --git a/lib/core/middleware/nuxt.js b/lib/core/middleware/nuxt.js index b2eb7c8939..8f075d5926 100644 --- a/lib/core/middleware/nuxt.js +++ b/lib/core/middleware/nuxt.js @@ -1,9 +1,9 @@ -const generateETag = require('etag') -const fresh = require('fresh') +import generateETag from 'etag' +import fresh from 'fresh' -const { getContext } = require('../../common/utils') +import { getContext } from '../../common/utils' -module.exports = async function nuxtMiddleware(req, res, next) { +export default async function nuxtMiddleware(req, res, next) { // Get context const context = getContext(req, res) diff --git a/lib/core/module.js b/lib/core/module.js index 815d60ba77..4a3e9e36fc 100644 --- a/lib/core/module.js +++ b/lib/core/module.js @@ -1,9 +1,9 @@ -const path = require('path') -const fs = require('fs') -const hash = require('hash-sum') -const { chainFn, sequence, printWarn } = require('../common/utils') +import path from 'path' +import fs from 'fs' +import hash from 'hash-sum' +import { chainFn, sequence, printWarn } from '../common/utils' -module.exports = class ModuleContainer { +export default class ModuleContainer { constructor(nuxt) { this.nuxt = nuxt this.options = nuxt.options @@ -112,7 +112,7 @@ module.exports = class ModuleContainer { // Resolve handler if (!handler) { - handler = require(this.nuxt.resolvePath(src)) + handler = this.nuxt.requireModule(src) } // Validate handler diff --git a/lib/core/nuxt.js b/lib/core/nuxt.js index 901f1fe0bd..ac6df46298 100644 --- a/lib/core/nuxt.js +++ b/lib/core/nuxt.js @@ -1,20 +1,21 @@ -const Debug = require('debug') -const enableDestroy = require('server-destroy') -const Module = require('module') -const { isPlainObject } = require('lodash') -const chalk = require('chalk') -const { existsSync } = require('fs-extra') -const { Options } = require('../common') -const { sequence, printError } = require('../common/utils') -const { resolve, join } = require('path') -const { version } = require('../../package.json') -const ModuleContainer = require('./module') -const Renderer = require('./renderer') +import Debug from 'debug' +import enableDestroy from 'server-destroy' +import Module from 'module' +import { isPlainObject } from 'lodash' +import chalk from 'chalk' +import { existsSync } from 'fs-extra' +import Options from '../common/options' +import { sequence, printError } from '../common/utils' +import { resolve, join } from 'path' +import { version } from '../../package.json' +import ModuleContainer from './module' +import Renderer from './renderer' +import { requireModule } from '../common/module' const debug = Debug('nuxt:') debug.color = 5 -module.exports = class Nuxt { +export default class Nuxt { constructor(options = {}) { this.options = Options.from(options) @@ -196,6 +197,10 @@ module.exports = class Nuxt { throw new Error(`Cannot resolve "${path}" from "${_path}"`) } + requireModule(name) { + return requireModule(this.resolvePath(name)) + } + async close(callback) { await this.callHook('close', this) diff --git a/lib/core/renderer.js b/lib/core/renderer.js index e634b3da49..885cf03554 100644 --- a/lib/core/renderer.js +++ b/lib/core/renderer.js @@ -1,22 +1,22 @@ -const ansiHTML = require('ansi-html') -const serialize = require('serialize-javascript') -const serveStatic = require('serve-static') -const compression = require('compression') -const _ = require('lodash') -const { join, resolve } = require('path') -const fs = require('fs-extra') -const { createBundleRenderer } = require('vue-server-renderer') -const Debug = require('debug') -const connect = require('connect') -const launchMiddleware = require('launch-editor-middleware') -const crypto = require('crypto') +import ansiHTML from 'ansi-html' +import serialize from 'serialize-javascript' +import serveStatic from 'serve-static' +import compression from 'compression' +import _ from 'lodash' +import { join, resolve } from 'path' +import fs from 'fs-extra' +import { createBundleRenderer } from 'vue-server-renderer' +import Debug from 'debug' +import connect from 'connect' +import launchMiddleware from 'launch-editor-middleware' +import crypto from 'crypto' -const { setAnsiColors, isUrl, waitFor, timeout } = require('../common/utils') -const { Options } = require('../common') +import { setAnsiColors, isUrl, waitFor, timeout } from '../common/utils' +import Options from '../common/options' -const MetaRenderer = require('./meta') -const errorMiddleware = require('./middleware/error') -const nuxtMiddleware = require('./middleware/nuxt') +import MetaRenderer from './meta' +import errorMiddleware from './middleware/error' +import nuxtMiddleware from './middleware/nuxt' const debug = Debug('nuxt:render') debug.color = 4 // Force blue color @@ -25,7 +25,7 @@ setAnsiColors(ansiHTML) let jsdom = null -module.exports = class Renderer { +export default class Renderer { constructor(nuxt) { this.nuxt = nuxt this.options = nuxt.options @@ -180,12 +180,10 @@ module.exports = class Renderer { const $m = m let src if (typeof m === 'string') { - src = this.nuxt.resolvePath(m) - m = require(src) + m = this.nuxt.requireModule(m) } if (typeof m.handler === 'string') { - src = this.nuxt.resolvePath(m.handler) - m.handler = require(src) + m.handler = this.nuxt.requireModule(m.handler) } const handler = m.handler || m diff --git a/lib/index.js b/lib/index.js index f0b416e198..6f0d3a8d2b 100644 --- a/lib/index.js +++ b/lib/index.js @@ -1,11 +1,20 @@ /*! * Nuxt.js - * (c) 2016-2017 Chopin Brothers - * Core maintainer: Pooya Parsa (@pi0) + * (c) 2016-2018 Chopin Brothers + * Core maintainers: Pooya Parsa (@pi0) - Clark Du (@clarkdo) * Released under the MIT License. */ -const core = require('./core') -const builder = require('./builder') +const requireModule = require('esm')(module, {}) -module.exports = Object.assign({}, core, builder) +const core = requireModule('./core').default +const builder = requireModule('./builder').default +const Utils = requireModule('./common/utils') +const Options = requireModule('./common/options').default + +module.exports = { + Utils, + Options, + ...core, + ...builder +} diff --git a/lib/index.mjs b/lib/index.mjs new file mode 100644 index 0000000000..b607bacbb9 --- /dev/null +++ b/lib/index.mjs @@ -0,0 +1,18 @@ +/*! + * Nuxt.js + * (c) 2016-2018 Chopin Brothers + * Core maintainers: Pooya Parsa (@pi0) - Clark Du (@clarkdo) + * Released under the MIT License. + */ + +import core from './core' +import builder from './builder' +import * as Utils from './common/utils' +import Options from './common/options' + +export default { + Utils, + Options, + ...core, + ...builder +} diff --git a/package.json b/package.json index f352e73ca7..d400b3b149 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ } ], "main": "./lib/index.js", + "module": "./lib/index.mjs", "license": "MIT", "repository": { "type": "git", diff --git a/test/basic.generate.test.js b/test/basic.generate.test.js index 9309b5eca5..072067bac6 100644 --- a/test/basic.generate.test.js +++ b/test/basic.generate.test.js @@ -8,6 +8,7 @@ import finalhandler from 'finalhandler' import rp from 'request-promise-native' import { interceptLog, release } from './helpers/console' import { Nuxt, Builder, Generator } from '..' +import { loadConfig } from './helpers/config' const port = 4002 const url = route => 'http://localhost:' + port + route @@ -19,10 +20,11 @@ let generator = null // Init nuxt.js and create server listening on localhost:4000 test.serial('Init Nuxt.js', async t => { - let config = require(resolve(rootDir, 'nuxt.config.js')) - config.rootDir = rootDir - config.buildDir = '.nuxt-generate' - config.dev = false + const config = loadConfig('basic', { + buildDir: '.nuxt-generate', + dev: false + }) + config.build.stats = false const logSpy = await interceptLog(async () => { diff --git a/test/custom-dirs.test.js b/test/custom-dirs.test.js index 7201c0c7aa..d893deac98 100644 --- a/test/custom-dirs.test.js +++ b/test/custom-dirs.test.js @@ -1,8 +1,8 @@ import test from 'ava' -import { resolve } from 'path' import rp from 'request-promise-native' import { Nuxt, Builder } from '..' import { interceptLog } from './helpers/console' +import { loadConfig } from './helpers/config' const port = 4007 const url = route => 'http://localhost:' + port + route @@ -12,10 +12,7 @@ let builder = null // Init nuxt.js and create server listening on localhost:4000 test.before('Init Nuxt.js', async t => { - const rootDir = resolve(__dirname, 'fixtures/custom-dirs') - let config = require(resolve(rootDir, 'nuxt.config.js')) - config.rootDir = rootDir - config.dev = false + const config = loadConfig('/custom-dirs', { dev: false }) const logSpy = await interceptLog(async () => { nuxt = new Nuxt(config) diff --git a/test/debug.test.js b/test/debug.test.js index 3a58f4895f..bc0c341038 100644 --- a/test/debug.test.js +++ b/test/debug.test.js @@ -1,8 +1,8 @@ import test from 'ava' -import { resolve } from 'path' import rp from 'request-promise-native' import { Nuxt, Builder } from '..' import { interceptLog, interceptError, release } from './helpers/console' +import { loadConfig } from './helpers/config' const port = 4009 const url = route => 'http://localhost:' + port + route @@ -11,9 +11,7 @@ let nuxt = null // Init nuxt.js and create server listening on localhost:4000 test.before('Init Nuxt.js', async t => { - const rootDir = resolve(__dirname, 'fixtures/debug') - let config = require(resolve(rootDir, 'nuxt.config.js')) - config.rootDir = rootDir + const config = loadConfig('debug') const logSpy = await interceptLog(async () => { nuxt = new Nuxt(config) diff --git a/test/deprecate.test.js b/test/deprecate.test.js index a86ca2e428..2eced35c9f 100644 --- a/test/deprecate.test.js +++ b/test/deprecate.test.js @@ -1,7 +1,7 @@ import test from 'ava' -import { resolve } from 'path' import { Nuxt, Builder } from '..' import { intercept } from './helpers/console' +import { loadConfig } from './helpers/config' const port = 4010 @@ -11,10 +11,7 @@ let buildSpies = null // Init nuxt.js and create server listening on localhost:4000 test.serial('Init Nuxt.js', async t => { - const rootDir = resolve(__dirname, 'fixtures/deprecate') - let config = require(resolve(rootDir, 'nuxt.config.js')) - config.rootDir = rootDir - config.dev = false + const config = loadConfig('deprecate', { dev: false }) buildSpies = await intercept(async () => { nuxt = new Nuxt(config) diff --git a/test/error.test.js b/test/error.test.js index c27f169c94..7c7abdd042 100644 --- a/test/error.test.js +++ b/test/error.test.js @@ -1,8 +1,8 @@ import test from 'ava' -import { resolve } from 'path' import rp from 'request-promise-native' import { Nuxt, Builder } from '..' import { interceptLog, interceptError, release } from './helpers/console' +import { loadConfig } from './helpers/config' const port = 4005 const url = route => 'http://localhost:' + port + route @@ -12,10 +12,7 @@ let logSpy // Init nuxt.js and create server listening on localhost:4000 test.serial('Init Nuxt.js', async t => { - const rootDir = resolve(__dirname, 'fixtures/error') - const config = require(resolve(rootDir, 'nuxt.config.js')) - config.rootDir = rootDir - config.dev = false + const config = loadConfig('error', { dev: false }) logSpy = await interceptLog(async () => { nuxt = new Nuxt(config) diff --git a/test/fallback.generate.test.js b/test/fallback.generate.test.js index f041616d69..68d68b8fa4 100644 --- a/test/fallback.generate.test.js +++ b/test/fallback.generate.test.js @@ -7,10 +7,10 @@ import finalhandler from 'finalhandler' import rp from 'request-promise-native' import { intercept, interceptLog } from './helpers/console' import { Nuxt, Builder, Generator, Options } from '..' +import { loadConfig } from './helpers/config' const port = 4015 const url = route => 'http://localhost:' + port + route -const rootDir = resolve(__dirname, 'fixtures/basic') let nuxt = null let server = null @@ -18,10 +18,10 @@ let generator = null // Init nuxt.js and create server listening on localhost:4015 test.serial('Init Nuxt.js', async t => { - let config = require(resolve(rootDir, 'nuxt.config.js')) - config.rootDir = rootDir - config.buildDir = '.nuxt-spa-fallback' - config.dev = false + let config = loadConfig('basic', { + buildDir: '.nuxt-spa-fallback', + dev: false + }) config.build.stats = false const logSpy = await interceptLog(async () => { diff --git a/test/fixtures/basic/nuxt.config.js b/test/fixtures/basic/nuxt.config.js index e2c5472a90..201210802b 100644 --- a/test/fixtures/basic/nuxt.config.js +++ b/test/fixtures/basic/nuxt.config.js @@ -1,6 +1,6 @@ -const path = require('path') +import path from 'path' -module.exports = { +export default { generate: { routes: [ '/users/1', diff --git a/test/fixtures/custom-dirs/nuxt.config.js b/test/fixtures/custom-dirs/nuxt.config.js index f150701a46..45c658ef3a 100644 --- a/test/fixtures/custom-dirs/nuxt.config.js +++ b/test/fixtures/custom-dirs/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { css: [{ src: '~/custom-assets/app.css' }], dir: { assets: 'custom-assets', diff --git a/test/fixtures/debug/nuxt.config.js b/test/fixtures/debug/nuxt.config.js index a9111cd54a..494d20b5a1 100644 --- a/test/fixtures/debug/nuxt.config.js +++ b/test/fixtures/debug/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { router: { base: '/test/' }, diff --git a/test/fixtures/deprecate/modules/deprecated-apis/index.js b/test/fixtures/deprecate/modules/deprecated-apis/index.js index 9f06056b9e..b2ceaf3de5 100644 --- a/test/fixtures/deprecate/modules/deprecated-apis/index.js +++ b/test/fixtures/deprecate/modules/deprecated-apis/index.js @@ -1,3 +1,3 @@ -module.exports = function basicModule(options, resolve) { +export default function basicModule(options, resolve) { this.addVendor('lodash') } diff --git a/test/fixtures/deprecate/nuxt.config.js b/test/fixtures/deprecate/nuxt.config.js index 6415102f2f..977eaf5a40 100644 --- a/test/fixtures/deprecate/nuxt.config.js +++ b/test/fixtures/deprecate/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { modules: ['~/modules/deprecated-apis'], build: { stats: false diff --git a/test/fixtures/error/nuxt.config.js b/test/fixtures/error/nuxt.config.js index 39dc2dca7a..96e260ba0b 100644 --- a/test/fixtures/error/nuxt.config.js +++ b/test/fixtures/error/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { hooks(hook) { hook('build:done', nuxt => { throw new Error('hook error') diff --git a/test/fixtures/module/modules/basic/index.js b/test/fixtures/module/modules/basic/index.js index 19c8cf976c..33233dc860 100644 --- a/test/fixtures/module/modules/basic/index.js +++ b/test/fixtures/module/modules/basic/index.js @@ -1,6 +1,6 @@ -const path = require('path') +import path from 'path' -module.exports = function basicModule(options) { +export default function basicModule(options) { // Add a plugin this.addPlugin(path.resolve(__dirname, 'reverse.js')) diff --git a/test/fixtures/module/modules/empty/index.js b/test/fixtures/module/modules/empty/index.js index 05c0b3f72e..bf3b979298 100644 --- a/test/fixtures/module/modules/empty/index.js +++ b/test/fixtures/module/modules/empty/index.js @@ -1,4 +1,4 @@ -module.exports = function middlewareModule(options) { +export default function middlewareModule(options) { // Empty module } diff --git a/test/fixtures/module/modules/hooks/index.js b/test/fixtures/module/modules/hooks/index.js index 6a94b51671..eac4a10e97 100644 --- a/test/fixtures/module/modules/hooks/index.js +++ b/test/fixtures/module/modules/hooks/index.js @@ -1,4 +1,4 @@ -module.exports = function () { +export default function () { let ctr = 1 // Add hook for module diff --git a/test/fixtures/module/modules/middleware/index.js b/test/fixtures/module/modules/middleware/index.js index 33f1880806..fb46907191 100644 --- a/test/fixtures/module/modules/middleware/index.js +++ b/test/fixtures/module/modules/middleware/index.js @@ -1,4 +1,4 @@ -module.exports = function middlewareModule(options) { +export default function middlewareModule(options) { return new Promise((resolve, reject) => { // Add /api endpoint this.addServerMiddleware({ diff --git a/test/fixtures/module/modules/middleware/log.js b/test/fixtures/module/modules/middleware/log.js index c8d2b3ebcb..400f47cb51 100644 --- a/test/fixtures/module/modules/middleware/log.js +++ b/test/fixtures/module/modules/middleware/log.js @@ -1,4 +1,4 @@ -module.exports = function (req, res, next) { +export default function (req, res, next) { // eslint-disable-next-line no-console console.log(req.url) next() diff --git a/test/fixtures/module/modules/middleware/midd1.js b/test/fixtures/module/modules/middleware/midd1.js index 78ec0d0355..4ccf32924d 100644 --- a/test/fixtures/module/modules/middleware/midd1.js +++ b/test/fixtures/module/modules/middleware/midd1.js @@ -1,4 +1,4 @@ -module.exports = function (req, res, next) { +export default function (req, res, next) { res.setHeader('x-midd-1', 'ok') next() } diff --git a/test/fixtures/module/modules/middleware/midd2.js b/test/fixtures/module/modules/middleware/midd2.js index 64babff282..cd0d65cbaa 100644 --- a/test/fixtures/module/modules/middleware/midd2.js +++ b/test/fixtures/module/modules/middleware/midd2.js @@ -1,4 +1,4 @@ -module.exports = function (req, res, next) { +export default function (req, res, next) { res.setHeader('x-midd-2', 'ok') next() } diff --git a/test/fixtures/module/modules/middleware/use-middleware.js b/test/fixtures/module/modules/middleware/use-middleware.js index f6156520c3..624ff48a83 100644 --- a/test/fixtures/module/modules/middleware/use-middleware.js +++ b/test/fixtures/module/modules/middleware/use-middleware.js @@ -1,3 +1,3 @@ -module.exports = function (req, res, next) { +export default function (req, res, next) { res.end('Use external middleware') } diff --git a/test/fixtures/module/modules/template/index.js b/test/fixtures/module/modules/template/index.js index 6033364d55..3d95885e14 100644 --- a/test/fixtures/module/modules/template/index.js +++ b/test/fixtures/module/modules/template/index.js @@ -1,6 +1,6 @@ -const path = require('path') +import path from 'path' -module.exports = function () { +export default function () { // Disable parsing pages/ this.nuxt.options.build.createRoutes = () => {} diff --git a/test/fixtures/module/nuxt.config.js b/test/fixtures/module/nuxt.config.js index 7f06cbbeae..0eadbe29aa 100644 --- a/test/fixtures/module/nuxt.config.js +++ b/test/fixtures/module/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { loading: true, modules: [ '~~/modules/basic', diff --git a/test/fixtures/spa/nuxt.config.js b/test/fixtures/spa/nuxt.config.js index 9bb39b668f..ba9bea0eac 100644 --- a/test/fixtures/spa/nuxt.config.js +++ b/test/fixtures/spa/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { mode: 'spa', dev: false, transition: false, diff --git a/test/fixtures/ssr/nuxt.config.js b/test/fixtures/ssr/nuxt.config.js index 792e6b0db2..d6f6862005 100644 --- a/test/fixtures/ssr/nuxt.config.js +++ b/test/fixtures/ssr/nuxt.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { dev: false, render: { resourceHints: false, diff --git a/test/fixtures/with-config/nuxt.config.js b/test/fixtures/with-config/nuxt.config.js index 1997fd52ad..80f0920abb 100644 --- a/test/fixtures/with-config/nuxt.config.js +++ b/test/fixtures/with-config/nuxt.config.js @@ -1,6 +1,6 @@ -const path = require('path') +import path from 'path' -module.exports = { +export default { srcDir: __dirname, router: { base: '/test/', diff --git a/test/helpers/config.js b/test/helpers/config.js new file mode 100644 index 0000000000..c0547c4ad7 --- /dev/null +++ b/test/helpers/config.js @@ -0,0 +1,11 @@ +import { resolve } from 'path' + +import { requireModule } from '../../lib/common/module' + +export function loadConfig(fixture, overrides) { + const rootDir = resolve(__dirname, '../fixtures/' + fixture) + + const config = requireModule(resolve(rootDir, 'nuxt.config.js')) + + return Object.assign({ rootDir }, config, overrides) +} diff --git a/test/module.test.js b/test/module.test.js index 7e4b3e3965..85444d0218 100644 --- a/test/module.test.js +++ b/test/module.test.js @@ -1,8 +1,9 @@ import test from 'ava' -import { resolve, normalize } from 'path' +import { normalize } from 'path' import rp from 'request-promise-native' import { Nuxt, Builder } from '..' import { intercept } from './helpers/console' +import { loadConfig } from './helpers/config' const port = 4006 const url = route => 'http://localhost:' + port + route @@ -13,10 +14,8 @@ let buildSpies = null // Init nuxt.js and create server listening on localhost:4000 test.serial('Init Nuxt.js', async t => { - const rootDir = resolve(__dirname, 'fixtures/module') - const config = require(resolve(rootDir, 'nuxt.config.js')) - config.rootDir = rootDir - config.dev = false + const config = loadConfig('module', { dev: false }) + nuxt = new Nuxt(config) builder = new Builder(nuxt) diff --git a/test/spa.test.js b/test/spa.test.js index 9e44427e0b..311bb60d1f 100644 --- a/test/spa.test.js +++ b/test/spa.test.js @@ -1,7 +1,7 @@ import test from 'ava' -import { resolve } from 'path' import { Nuxt, Builder } from '..' import { interceptLog, release } from './helpers/console' +import { loadConfig } from './helpers/config' let nuxt = null @@ -17,9 +17,7 @@ const renderRoute = async _url => { // Init nuxt.js and create server listening on localhost:4000 test.serial('Init Nuxt.js', async t => { - const rootDir = resolve(__dirname, 'fixtures/spa') - const config = require(resolve(rootDir, 'nuxt.config.js')) - config.rootDir = rootDir + const config = loadConfig('spa') const logSpy = await interceptLog(async () => { nuxt = new Nuxt(config) diff --git a/test/ssr.test.js b/test/ssr.test.js index a5e3d65da3..76638b2cc6 100644 --- a/test/ssr.test.js +++ b/test/ssr.test.js @@ -1,9 +1,9 @@ import test from 'ava' -import { resolve } from 'path' import { Nuxt, Builder, Utils } from '..' import { uniq } from 'lodash' import rp from 'request-promise-native' import { interceptLog } from './helpers/console' +import { loadConfig } from './helpers/config' const port = 4008 let nuxt = null @@ -19,9 +19,7 @@ const isWindows = /^win/.test(process.platform) // Init nuxt.js and create server listening on localhost:4000 test.serial('Init Nuxt.js', async t => { - const rootDir = resolve(__dirname, 'fixtures/ssr') - const config = require(resolve(rootDir, 'nuxt.config.js')) - config.rootDir = rootDir + const config = loadConfig('ssr') const logSpy = await interceptLog(async () => { nuxt = new Nuxt(config) diff --git a/test/with-config.test.js b/test/with-config.test.js index 8900379d10..e1bbcb3ef0 100644 --- a/test/with-config.test.js +++ b/test/with-config.test.js @@ -4,6 +4,7 @@ import rp from 'request-promise-native' import { Nuxt, Builder } from '..' import styleLoader from '../lib/builder/webpack/style-loader' import { interceptLog, release } from './helpers/console' +import { loadConfig } from './helpers/config' const port = 4007 const url = route => 'http://localhost:' + port + route @@ -13,10 +14,9 @@ let builder = null // Init nuxt.js and create server listening on localhost:4000 test.before('Init Nuxt.js', async t => { - const rootDir = resolve(__dirname, 'fixtures/with-config') - let config = require(resolve(rootDir, 'nuxt.config.js')) - config.rootDir = rootDir - config.dev = false + const config = loadConfig('with-config', { + dev: false + }) const logSpy = await interceptLog(async () => { nuxt = new Nuxt(config)