Comparing version 2.13.3 to 2.14.0
/*! | ||
* @nuxt/cli v2.13.3 (c) 2016-2020 | ||
* @nuxt/cli v2.14.0 (c) 2016-2020 | ||
@@ -4,0 +4,0 @@ * - All the amazing contributors |
/*! | ||
* @nuxt/cli v2.13.3 (c) 2016-2020 | ||
* @nuxt/cli v2.14.0 (c) 2016-2020 | ||
@@ -109,3 +109,3 @@ * - All the amazing contributors | ||
const nextCommand = nuxt.options.target === utils.TARGETS.static ? 'nuxt export' : 'nuxt start'; | ||
const nextCommand = nuxt.options.target === utils.TARGETS.static ? 'nuxt generate' : 'nuxt start'; | ||
consola.info('Ready to run `' + (nextCommand) + '`'); | ||
@@ -112,0 +112,0 @@ } |
/*! | ||
* @nuxt/cli v2.13.3 (c) 2016-2020 | ||
* @nuxt/cli v2.14.0 (c) 2016-2020 | ||
@@ -36,3 +36,3 @@ * - All the amazing contributors | ||
...index.common, | ||
...index.server, | ||
...index.server$1, | ||
open: { | ||
@@ -39,0 +39,0 @@ alias: 'o', |
/*! | ||
* @nuxt/cli v2.13.3 (c) 2016-2020 | ||
* @nuxt/cli v2.14.0 (c) 2016-2020 | ||
@@ -12,8 +12,7 @@ * - All the amazing contributors | ||
const index = require('./cli-index.js'); | ||
const path = require('path'); | ||
const path__default = _interopDefault(path); | ||
require('./cli-index.js'); | ||
require('path'); | ||
require('@nuxt/config'); | ||
require('exit'); | ||
const utils = require('@nuxt/utils'); | ||
require('@nuxt/utils'); | ||
require('chalk'); | ||
@@ -28,45 +27,13 @@ require('std-env'); | ||
require('execa'); | ||
require('fs-extra'); | ||
require('buffer'); | ||
const generate = require('./cli-generate.js'); | ||
require('globby'); | ||
require('destr'); | ||
const _export = { | ||
name: 'export', | ||
description: 'Export a static generated web application', | ||
usage: 'export <dir>', | ||
options: { | ||
...index.common, | ||
...index.locking, | ||
'fail-on-error': { | ||
type: 'boolean', | ||
default: false, | ||
description: 'Exit with non-zero status code if there are errors when exporting pages' | ||
} | ||
}, | ||
async run (cmd) { | ||
const config = await cmd.getNuxtConfig({ | ||
dev: false, | ||
target: utils.TARGETS.static, | ||
_export: true | ||
}); | ||
const nuxt = await cmd.getNuxt(config); | ||
if (cmd.argv.lock) { | ||
await cmd.setLock(await index.createLock({ | ||
id: 'export', | ||
dir: nuxt.options.generate.dir, | ||
root: config.rootDir | ||
})); | ||
} | ||
const generator = await cmd.getGenerator(nuxt); | ||
await nuxt.server.listen(0); | ||
const { errors } = await generator.generate({ | ||
init: true, | ||
build: false | ||
}); | ||
await nuxt.close(); | ||
if (cmd.argv['fail-on-error'] && errors.length > 0) { | ||
throw new Error('Error exporting pages, exiting with non-zero code') | ||
} | ||
consola.info('Ready to run `nuxt serve` or deploy `' + path__default.basename(nuxt.options.generate.dir) + '/` directory'); | ||
...generate.default, | ||
run (...args) { | ||
consola.warn('`nuxt export` has been deprecated! Please use `nuxt generate`.'); | ||
return generate.default.run.call(this, ...args) | ||
} | ||
@@ -73,0 +40,0 @@ }; |
/*! | ||
* @nuxt/cli v2.13.3 (c) 2016-2020 | ||
* @nuxt/cli v2.14.0 (c) 2016-2020 | ||
@@ -10,4 +10,7 @@ * - All the amazing contributors | ||
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } | ||
const index = require('./cli-index.js'); | ||
require('path'); | ||
const path = require('path'); | ||
const path__default = _interopDefault(path); | ||
require('@nuxt/config'); | ||
@@ -20,3 +23,3 @@ require('exit'); | ||
require('boxen'); | ||
require('consola'); | ||
const consola = _interopDefault(require('consola')); | ||
require('minimist'); | ||
@@ -26,4 +29,237 @@ require('hable'); | ||
require('execa'); | ||
const fs$1 = _interopDefault(require('fs-extra')); | ||
const buffer = _interopDefault(require('buffer')); | ||
const globby = _interopDefault(require('globby')); | ||
const destr = _interopDefault(require('destr')); | ||
const generate = { | ||
var create_buffer = index.createCommonjsModule(function (module, exports) { | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
var createBuffer = buffer.Buffer.from && buffer.Buffer.alloc && buffer.Buffer.allocUnsafe && buffer.Buffer.allocUnsafeSlow ? buffer.Buffer.from : // support for Node < 5.10 | ||
function (val) { | ||
return new buffer.Buffer(val); | ||
}; | ||
exports.default = createBuffer; | ||
}); | ||
var define_crc = index.createCommonjsModule(function (module, exports) { | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.default = function (model, calc) { | ||
var fn = function fn(buf, previous) { | ||
return calc(buf, previous) >>> 0; | ||
}; | ||
fn.signed = calc; | ||
fn.unsigned = fn; | ||
fn.model = model; | ||
return fn; | ||
}; | ||
}); | ||
var crc32_1 = index.createCommonjsModule(function (module, exports) { | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
var _create_buffer2 = _interopRequireDefault(create_buffer); | ||
var _define_crc2 = _interopRequireDefault(define_crc); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
// Generated by `./pycrc.py --algorithm=table-driven --model=crc-32 --generate=c` | ||
// prettier-ignore | ||
var TABLE = [0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d]; | ||
if (typeof Int32Array !== 'undefined') TABLE = new Int32Array(TABLE); | ||
var crc32 = (0, _define_crc2.default)('crc-32', function (buf, previous) { | ||
if (!buffer.Buffer.isBuffer(buf)) buf = (0, _create_buffer2.default)(buf); | ||
var crc = previous === 0 ? 0 : ~~previous ^ -1; | ||
for (var index = 0; index < buf.length; index++) { | ||
var byte = buf[index]; | ||
crc = TABLE[(crc ^ byte) & 0xff] ^ crc >>> 8; | ||
} | ||
return crc ^ -1; | ||
}); | ||
exports.default = crc32; | ||
}); | ||
var crc32 = crc32_1.default; | ||
async function generate (cmd) { | ||
const nuxt = await getNuxt({ server: true }, cmd); | ||
const generator = await cmd.getGenerator(nuxt); | ||
await nuxt.server.listen(0); | ||
await generator.generate({ build: false }); | ||
await nuxt.close(); | ||
} | ||
async function ensureBuild (cmd) { | ||
const nuxt = await getNuxt({ _build: true, server: false }, cmd); | ||
const { options } = nuxt; | ||
if (options.generate.cache === false || destr(process.env.NUXT_BUILD) || cmd.argv['force-build']) { | ||
const builder = await cmd.getBuilder(nuxt); | ||
await builder.build(); | ||
await nuxt.close(); | ||
} | ||
// Default build ignore files | ||
const ignore = [ | ||
options.buildDir, | ||
options.dir.static, | ||
options.generate.dir, | ||
'node_modules', | ||
'.**/*', | ||
'.*', | ||
'README.md' | ||
]; | ||
// Extend ignore | ||
const { generate } = options; | ||
if (generate.cache.ignore === 'function') { | ||
generate.cache.ignore = generate.cache.ignore(ignore); | ||
} else if (Array.isArray(generate.cache.ignore)) { | ||
generate.cache.ignore = generate.cache.ignore.concat(ignore); | ||
} | ||
await nuxt.callHook('generate:cache:ignore', generate.cache.ignore); | ||
// Take a snapshot of current project | ||
const snapshotOptions = { | ||
rootDir: nuxt.options.rootDir, | ||
ignore: nuxt.options.generate.cache.ignore, | ||
globbyOptions: nuxt.options.generate.cache.globbyOptions | ||
}; | ||
const currentBuildSnapshot = await snapshot(snapshotOptions); | ||
// Current build meta | ||
const currentBuild = { | ||
// @ts-ignore | ||
nuxtVersion: nuxt.constructor.version, | ||
ssr: nuxt.options.ssr, | ||
target: nuxt.options.target, | ||
snapshot: currentBuildSnapshot | ||
}; | ||
// Check if build can be skipped | ||
const nuxtBuildFile = path__default.resolve(nuxt.options.buildDir, 'build.json'); | ||
if (fs$1.existsSync(nuxtBuildFile)) { | ||
const previousBuild = destr(fs$1.readFileSync(nuxtBuildFile, 'utf-8')) || {}; | ||
for (const field of ['nuxtVersion', 'ssr', 'target']) { | ||
if (previousBuild[field] !== currentBuild[field]) { | ||
consola.info(`Doing webpack rebuild because ${field} changed`); | ||
break | ||
} | ||
} | ||
// Full snapshot diff | ||
{ | ||
const changed = compareSnapshots(previousBuild.snapshot, currentBuild.snapshot); | ||
if (!changed) { | ||
consola.success('Skipping webpack build as no changes detected'); | ||
return | ||
} else { | ||
consola.info(`Doing webpack rebuild because ${changed} modified`); | ||
} | ||
} | ||
} | ||
// Webpack build | ||
const builder = await cmd.getBuilder(nuxt); | ||
await builder.build(); | ||
// Write build.json | ||
fs$1.writeFileSync(nuxtBuildFile, JSON.stringify(currentBuild, null, 2), 'utf-8'); | ||
await nuxt.close(); | ||
} | ||
async function getNuxt (args, cmd) { | ||
const config = await cmd.getNuxtConfig({ dev: false, ...args }); | ||
if (config.target === utils.TARGETS.static) { | ||
config._export = true; | ||
} else { | ||
config._legacyGenerate = true; | ||
} | ||
config.buildDir = (config.static && config.static.cacheDir) || path__default.resolve(config.rootDir, 'node_modules/.cache/nuxt'); | ||
config.build = config.build || {}; | ||
config.build.transpile = config.build.transpile || []; | ||
if (!config.static || !config.static.cacheDir) { | ||
config.build.transpile.push('.cache/nuxt'); | ||
} | ||
const nuxt = await cmd.getNuxt(config); | ||
return nuxt | ||
} | ||
function compareSnapshots (from, to) { | ||
const allKeys = Array.from(new Set([ | ||
...Object.keys(from).sort(), | ||
...Object.keys(to).sort() | ||
])); | ||
for (const key of allKeys) { | ||
if (JSON.stringify(from[key]) !== JSON.stringify(to[key])) { | ||
return key | ||
} | ||
} | ||
return false | ||
} | ||
async function snapshot ({ globbyOptions, ignore, rootDir }) { | ||
const snapshot = {}; | ||
const files = await globby('**/*.*', { | ||
...globbyOptions, | ||
ignore, | ||
cwd: rootDir, | ||
absolute: true | ||
}); | ||
await Promise.all(files.map(async (p) => { | ||
const key = path.relative(rootDir, p); | ||
try { | ||
const fileContent = await fs$1.readFile(p); | ||
snapshot[key] = { | ||
checksum: await crc32(fileContent).toString(16) | ||
}; | ||
} catch (e) { | ||
// TODO: Check for other errors like permission denied | ||
snapshot[key] = { | ||
exists: false | ||
}; | ||
} | ||
})); | ||
return snapshot | ||
} | ||
const generate$1 = { | ||
name: 'generate', | ||
@@ -73,2 +309,7 @@ description: 'Generate a static web application (server-rendered)', | ||
}, | ||
'force-build': { | ||
type: 'boolean', | ||
default: false, | ||
description: 'Force to build the application with webpack' | ||
}, | ||
'fail-on-error': { | ||
@@ -81,10 +322,13 @@ type: 'boolean', | ||
async run (cmd) { | ||
const config = await cmd.getNuxtConfig({ | ||
dev: false, | ||
_build: cmd.argv.build, | ||
_generate: true | ||
}); | ||
const config = await cmd.getNuxtConfig({ dev: false }); | ||
// Disable analyze if set by the nuxt config | ||
config.build = config.build || {}; | ||
config.build.analyze = false; | ||
// Full static | ||
if (config.target === utils.TARGETS.static) { | ||
throw new Error("Please use `nuxt export` when using `target: 'static'`") | ||
await ensureBuild(cmd); | ||
await generate(cmd); | ||
return | ||
} | ||
@@ -95,6 +339,2 @@ | ||
// Disable analyze if set by the nuxt config | ||
config.build = config.build || {}; | ||
config.build.analyze = false; | ||
// Set flag to keep the prerendering behaviour | ||
@@ -138,2 +378,2 @@ config._legacyGenerate = true; | ||
exports.default = generate; | ||
exports.default = generate$1; |
/*! | ||
* @nuxt/cli v2.13.3 (c) 2016-2020 | ||
* @nuxt/cli v2.14.0 (c) 2016-2020 | ||
@@ -4,0 +4,0 @@ * - All the amazing contributors |
/*! | ||
* @nuxt/cli v2.13.3 (c) 2016-2020 | ||
* @nuxt/cli v2.14.0 (c) 2016-2020 | ||
@@ -12,8 +12,7 @@ * - All the amazing contributors | ||
const index = require('./cli-index.js'); | ||
const path = require('path'); | ||
const path__default = _interopDefault(path); | ||
const config = require('@nuxt/config'); | ||
require('./cli-index.js'); | ||
require('path'); | ||
require('@nuxt/config'); | ||
require('exit'); | ||
const utils = require('@nuxt/utils'); | ||
require('@nuxt/utils'); | ||
require('chalk'); | ||
@@ -23,85 +22,19 @@ require('std-env'); | ||
require('boxen'); | ||
require('consola'); | ||
const consola = _interopDefault(require('consola')); | ||
require('minimist'); | ||
require('hable'); | ||
const fs = require('fs'); | ||
const fs__default = _interopDefault(fs); | ||
require('fs'); | ||
require('execa'); | ||
require('pretty-bytes'); | ||
const banner = require('./cli-banner.js'); | ||
const connect = _interopDefault(require('connect')); | ||
const serveStatic = _interopDefault(require('serve-static')); | ||
const compression = _interopDefault(require('compression')); | ||
require('./cli-banner.js'); | ||
require('connect'); | ||
require('serve-static'); | ||
require('compression'); | ||
const start = require('./cli-start.js'); | ||
const serve = { | ||
name: 'serve', | ||
description: 'Serve the exported static application (should be compiled with `nuxt build` and `nuxt export` first)', | ||
usage: 'serve <dir>', | ||
options: { | ||
'config-file': index.common['config-file'], | ||
version: index.common.version, | ||
help: index.common.help, | ||
...index.server | ||
}, | ||
async run (cmd) { | ||
let options = await cmd.getNuxtConfig({ dev: false }); | ||
// add default options | ||
options = config.getNuxtConfig(options); | ||
try { | ||
// overwrites with build config | ||
const buildConfig = require(path.join(options.buildDir, 'nuxt/config.json')); | ||
options.target = buildConfig.target; | ||
} catch (err) {} | ||
if (options.target === utils.TARGETS.server) { | ||
throw new Error('You cannot use `nuxt serve` with ' + utils.TARGETS.server + ' target, please use `nuxt start`') | ||
} | ||
const distStat = await fs.promises.stat(options.generate.dir).catch(err => null); // eslint-disable-line handle-callback-err | ||
if (!distStat || !distStat.isDirectory()) { | ||
throw new Error('Output directory `' + path.basename(options.generate.dir) + '/` does not exists, please run `nuxt export` before `nuxt serve`.') | ||
} | ||
const app = connect(); | ||
app.use(compression({ threshold: 0 })); | ||
app.use( | ||
options.router.base, | ||
serveStatic(options.generate.dir, { | ||
extensions: ['html'] | ||
}) | ||
); | ||
if (options.generate.fallback) { | ||
const fallbackFile = await fs.promises.readFile(path.join(options.generate.dir, options.generate.fallback), 'utf-8'); | ||
app.use((req, res, next) => { | ||
const ext = path.extname(req.url) || '.html'; | ||
if (ext !== '.html') { | ||
return next() | ||
} | ||
res.writeHeader(200, { | ||
'Content-Type': 'text/html' | ||
}); | ||
res.write(fallbackFile); | ||
res.end(); | ||
}); | ||
} | ||
const { port, host, socket, https } = options.server; | ||
const { Listener } = await index.server$1(); | ||
const listener = new Listener({ | ||
port, | ||
host, | ||
socket, | ||
https, | ||
app, | ||
dev: true, // try another port if taken | ||
baseURL: options.router.base | ||
}); | ||
await listener.listen(); | ||
const { Nuxt } = await index.core(); | ||
banner.showBanner({ | ||
constructor: Nuxt, | ||
options, | ||
server: { | ||
listeners: [listener] | ||
} | ||
}, false); | ||
...start.default, | ||
run (...args) { | ||
consola.warn('`nuxt serve` has been deprecated! Please use `nuxt start`.'); | ||
return start.default.run.call(this, ...args) | ||
} | ||
@@ -108,0 +41,0 @@ }; |
/*! | ||
* @nuxt/cli v2.13.3 (c) 2016-2020 | ||
* @nuxt/cli v2.14.0 (c) 2016-2020 | ||
@@ -10,5 +10,8 @@ * - All the amazing contributors | ||
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } | ||
const index = require('./cli-index.js'); | ||
require('path'); | ||
require('@nuxt/config'); | ||
const path = require('path'); | ||
const path__default = _interopDefault(path); | ||
const config = require('@nuxt/config'); | ||
require('exit'); | ||
@@ -20,10 +23,82 @@ const utils = require('@nuxt/utils'); | ||
require('boxen'); | ||
require('consola'); | ||
const consola = _interopDefault(require('consola')); | ||
require('minimist'); | ||
require('hable'); | ||
require('fs'); | ||
const fs = require('fs'); | ||
const fs__default = _interopDefault(fs); | ||
require('execa'); | ||
require('pretty-bytes'); | ||
const banner = require('./cli-banner.js'); | ||
const connect = _interopDefault(require('connect')); | ||
const serveStatic = _interopDefault(require('serve-static')); | ||
const compression = _interopDefault(require('compression')); | ||
async function serve (cmd) { | ||
const _config = await cmd.getNuxtConfig({ dev: false }); | ||
// add default options | ||
const options = config.getNuxtConfig(_config); | ||
try { | ||
// overwrites with build config | ||
const buildConfig = require(path.join(options.buildDir, 'nuxt/config.json')); | ||
options.target = buildConfig.target; | ||
} catch (err) { } | ||
const distStat = await fs.promises.stat(options.generate.dir).catch(err => null); // eslint-disable-line handle-callback-err | ||
const distPath = path.join(options.generate.dir.replace(process.cwd() + path.sep, ''), path.sep); | ||
if (!distStat || !distStat.isDirectory()) { | ||
throw new Error('Output directory `' + distPath + '` does not exists, please use `nuxt generate` before `nuxt start` for static target.') | ||
} | ||
const app = connect(); | ||
app.use(compression({ threshold: 0 })); | ||
app.use( | ||
options.router.base, | ||
serveStatic(options.generate.dir, { | ||
extensions: ['html'] | ||
}) | ||
); | ||
if (options.generate.fallback) { | ||
const fallbackFile = await fs.promises.readFile(path.join(options.generate.dir, options.generate.fallback), 'utf-8'); | ||
app.use((req, res, next) => { | ||
const ext = path.extname(req.url) || '.html'; | ||
if (ext !== '.html') { | ||
return next() | ||
} | ||
res.writeHeader(200, { | ||
'Content-Type': 'text/html' | ||
}); | ||
res.write(fallbackFile); | ||
res.end(); | ||
}); | ||
} | ||
const { port, host, socket, https } = options.server; | ||
const { Listener } = await index.server(); | ||
const listener = new Listener({ | ||
port, | ||
host, | ||
socket, | ||
https, | ||
app, | ||
dev: true, // try another port if taken | ||
baseURL: options.router.base | ||
}); | ||
await listener.listen(); | ||
const { Nuxt } = await index.core(); | ||
banner.showBanner({ | ||
constructor: Nuxt, | ||
options, | ||
server: { | ||
listeners: [listener] | ||
} | ||
}, false); | ||
consola.info(`Serving static application from \`${distPath}\``); | ||
} | ||
const start = { | ||
@@ -35,9 +110,11 @@ name: 'start', | ||
...index.common, | ||
...index.server | ||
...index.server$1 | ||
}, | ||
async run (cmd) { | ||
const config = await cmd.getNuxtConfig({ dev: false, _start: true }); | ||
if (config.target === utils.TARGETS.static) { | ||
throw new Error('You cannot use `nuxt start` with ' + utils.TARGETS.static + ' target, please use `nuxt export` and `nuxt serve`') | ||
return serve(cmd) | ||
} | ||
const nuxt = await cmd.getNuxt(config); | ||
@@ -44,0 +121,0 @@ |
/*! | ||
* @nuxt/cli v2.13.3 (c) 2016-2020 | ||
* @nuxt/cli v2.14.0 (c) 2016-2020 | ||
@@ -4,0 +4,0 @@ * - All the amazing contributors |
/*! | ||
* @nuxt/cli v2.13.3 (c) 2016-2020 | ||
* @nuxt/cli v2.14.0 (c) 2016-2020 | ||
@@ -4,0 +4,0 @@ * - All the amazing contributors |
{ | ||
"name": "@nuxt/cli", | ||
"version": "2.13.3", | ||
"version": "2.14.0", | ||
"repository": "nuxt/nuxt.js", | ||
@@ -15,4 +15,5 @@ "license": "MIT", | ||
"dependencies": { | ||
"@nuxt/config": "2.13.3", | ||
"@nuxt/utils": "2.13.3", | ||
"@nuxt/config": "2.14.0", | ||
"@nuxt/static": "^1.0.0", | ||
"@nuxt/utils": "2.14.0", | ||
"boxen": "^4.2.0", | ||
@@ -23,2 +24,4 @@ "chalk": "^3.0.0", | ||
"consola": "^2.14.0", | ||
"crc": "^3.8.0", | ||
"destr": "^1.0.0", | ||
"esm": "^3.2.25", | ||
@@ -28,2 +31,3 @@ "execa": "^3.4.0", | ||
"fs-extra": "^8.1.0", | ||
"globby": "^11.0.1", | ||
"hable": "^3.0.0", | ||
@@ -30,0 +34,0 @@ "minimist": "^1.2.5", |
Sorry, the diff of this file is too big to display
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
124371
4004
22
22
+ Added@nuxt/static@^1.0.0
+ Addedcrc@^3.8.0
+ Addeddestr@^1.0.0
+ Addedglobby@^11.0.1
+ Added@nodelib/fs.scandir@2.1.5(transitive)
+ Added@nodelib/fs.stat@2.0.5(transitive)
+ Added@nodelib/fs.walk@1.2.8(transitive)
+ Added@nuxt/config@2.14.0(transitive)
+ Added@nuxt/static@1.0.0(transitive)
+ Added@nuxt/utils@2.14.0(transitive)
+ Addedarray-union@2.1.0(transitive)
+ Addedbase64-js@1.5.1(transitive)
+ Addedbraces@3.0.3(transitive)
+ Addedbuffer@5.7.1(transitive)
+ Addedcrc@3.8.0(transitive)
+ Addeddir-glob@3.0.1(transitive)
+ Addedfast-glob@3.3.3(transitive)
+ Addedfastq@1.19.0(transitive)
+ Addedfill-range@7.1.1(transitive)
+ Addedglob-parent@5.1.2(transitive)
+ Addedglobby@11.1.0(transitive)
+ Addedieee754@1.2.1(transitive)
+ Addedignore@5.3.2(transitive)
+ Addedis-extglob@2.1.1(transitive)
+ Addedis-glob@4.0.3(transitive)
+ Addedis-number@7.0.0(transitive)
+ Addedmerge2@1.4.1(transitive)
+ Addedmicromatch@4.0.8(transitive)
+ Addedpath-type@4.0.0(transitive)
+ Addedpicomatch@2.3.1(transitive)
+ Addedqueue-microtask@1.2.3(transitive)
+ Addedreusify@1.0.4(transitive)
+ Addedrun-parallel@1.2.0(transitive)
+ Addedslash@3.0.0(transitive)
+ Addedto-regex-range@5.0.1(transitive)
- Removed@nuxt/config@2.13.3(transitive)
- Removed@nuxt/utils@2.13.3(transitive)
Updated@nuxt/config@2.14.0
Updated@nuxt/utils@2.14.0