Cold starts on serverless platforms like Now 2.0 would be more efficient.
When I have a package.json
file that looks like this (working example)
dependencies: {
"nuxt": "^2.3.2"
}
Run with nuxt-start
npm ci —production
nu -sch ./node_modules
: > 100mb
When I have a package.json
file that looks like this (working example)
"dependencies": {
"@nuxt/core": "^2.3.2",
"core-js": "^2.5.7"
},
devDependencies: {
"nuxt": "^2.3.2"
}
and programatically run with nuxt.render
npm ci
npm run build
npm ci —production
nu -sch ./node_modules
is 26mb
Which is still pretty big.
(this installation pattern was taken from @now/next)
I noticed the nuxt-start
package, but it doesn’t work unless nuxt
is installed as well, which brings us back to where we started at > 100mb.
In comparison react
, react-dom
, next-server@canary
has a 2.8mb 12mb node_modules footprint
next-server is used in the @next/builder.
There should be an npm module similar to next-server, but for nuxt. This would make it easier to make a nuxt-builder for Now 2.0
I noticed the nuxt-start package, but it doesn’t work unless nuxt is installed as well, which brings us back to where we started at > 100mb.
That shouldnt happen. It work without nuxt and im using it for aws lambda serverless.
Maybe u just encountered a this bug in it https://github.com/nuxt/nuxt.js/pull/4384
@aldarund I was able to get nuxt-start
working with the recent updates, but also had to run npm install --production core-js
(+7mb) to get it to work. Even with nuxt-start
, the node_modules
output is still 26mb (it's basically the same as the @nuxt/core implementation), which seems relatively large compared to what it could be.
@rlindskog its not 26mb even with core-js. Its 15,7 MB (16Â 561Â 152 bytes) Other is your deps.
If you calculate it with du -sh ./node_modules
(finds the logical filesize), it will be 26mb with _just_ nuxt-start
and core-js
as dependencies.
Anyway, I found that next-server
should've been installed as next-server@canary
, which brings up the NextJS production node_modules
up to 12mb (just react
, react-dom
, next-server@canary
dependencies).
That's 26mb for Nuxt (19mb without core-js
) and 12mb for Next.
@rlindskog core-js shouldnt be needed. its a bug in babel that should be fixed in next release of preset-env https://github.com/babel/babel/pull/9048 and it should appear only in node 10+. You use node 10 or 11 right?
As for size. Its 16mb with core js. Less than 11mb without core-js. And yes, its logical filesize. Here my node modules archive so you can compare ( with core-js). https://www.dropbox.com/s/4t09a5u0pz2rbn8/node_modules_nuxt-start.zip?dl=0
here gist https://gist.github.com/pi0/dcf528794d29fa455c9ca745fb85fe04
@aldarund Good work! I think lodash
is still being installed in @nuxtjs/core
because of [email protected]
@nuxtjs/opencollective
After npm install
in nuxt/packages/core
nuxt.js/packages/core$ npm ls lodash
@nuxt.js/packages/core
└─┬ @nuxtjs/[email protected]
└─┬ [email protected]
└── [email protected]
It looks like consola
, has been already updated in @nuxtjs/opencollective
to 2.0.7, which doesn't contain lodash. Maybe @nuxtjs/opencollective
just needs a release?
@rlindskog Good catch!
This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
Most helpful comment
@rlindskog core-js shouldnt be needed. its a bug in babel that should be fixed in next release of preset-env https://github.com/babel/babel/pull/9048 and it should appear only in node 10+. You use node 10 or 11 right?
As for size. Its 16mb with core js. Less than 11mb without core-js. And yes, its logical filesize. Here my node modules archive so you can compare ( with core-js). https://www.dropbox.com/s/4t09a5u0pz2rbn8/node_modules_nuxt-start.zip?dl=0
here gist https://gist.github.com/pi0/dcf528794d29fa455c9ca745fb85fe04