Is it possible to have pages
folder not in the project root (where node_modules
and package.json
reside) but, for example, inside the src
folder at root? This is because in many projects, all the app source is put in a separate folder under root and it's logical to have pages
folder in there as well.
That's possible. Then you need to pass the src
directory as your app directory. Like this:
next src
next build src
next start src
Nice! Closing this one since it has been answered. Feel free to re-open if needed ๐ โค๏ธ
I don't see doc about this when running next --help
:
$ next --help
Usage
$ next <command>
Available commands
init, build, start, dev
For more information run a command with the --help flag
$ next init --help
Nor in the README?
Perfect! Thank you!
@sedubois
โฏ next build --help
Description
Compiles the application for production deployment
Usage
$ next build <dir>
<dir> represents where the compiled .next folder should go.
If no directory is provided, .next will be created in the current directory
How to do that while using Express.js ?
My development command is npm run dev
=> nodemon server/server.js
My folder structure:
|_ pages
|_ components
|_ ...
server
|_ server.js
|_ routes
|__ foo.js
.babelrc
.eslintrc
package.json
...
@kunokdev have you found out how to use a src while using also Express?
@paschalidi Nope, I decided to use Next.js basic convention, works for me atm.
I figure it out :)
const app = next({ dir: './src', dev });
this way you can have the pages folder into the src folder.
Hope this is straightforward enough. If not let me know
The example of @paschalidi throws an error in my environment with styled components and react-i18n:
These dependencies were not found:
* P:\example\node_modules\next\dist\pages\_error.js?entry in multi ./node_modules/next/dist/pages/_error.js?entry
* P:\example\node_modules\next\dist\pages\_document.js?entry in multi ./node_modules/next/dist/pages/_document.js?entry
@julmot please keep in mind that you're commenting on closed issues (closed over a year ago), and that we don't keep track of these.
I figure it out :)
const app = next({ dir: './src', dev });
this way you can have the pages folder into the src folder.
Hope this is straightforward enough. If not let me know
THANK YOU. I was looking for this for longer than I care to admit.
Default Server Mode
General
| | zeit/next.js canary | zeit/next.js canary | Change |
| - | - | - | - |
| buildDuration | 15s | 15.8s | โ ๏ธ +761ms |
| nodeModulesSize | 48.3 MB | 48.3 MB | โ |
Client Bundles (main, webpack, commons)
| | zeit/next.js canary | zeit/next.js canary | Change |
| - | - | - | - |
| main-HASH.js | 18.9 kB | 18.9 kB | โ |
| main-HASH.js gzip | 6.79 kB | 6.79 kB | โ |
| webpack-HASH.js | 1.53 kB | 1.53 kB | โ |
| webpack-HASH.js gzip | 746 B | 746 B | โ |
| 4952ddcd88e7..2b8407376.js | 21.9 kB | 21.9 kB | โ |
| 4952ddcd88e7..7376.js gzip | 7.81 kB | 7.81 kB | โ |
| de003c3a9d30..6604acae7.js | 43.2 kB | 43.2 kB | โ |
| de003c3a9d30..cae7.js gzip | 15.5 kB | 15.5 kB | โ |
| framework.5b..dbaff70d3.js | 125 kB | 125 kB | โ |
| framework.5b..70d3.js gzip | 39.4 kB | 39.4 kB | โ |
| Overall change | 211 kB | 211 kB | โ |
Client Bundles (main, webpack, commons) Modern
| | zeit/next.js canary | zeit/next.js canary | Change |
| - | - | - | - |
| main-HASH.module.js | 17.2 kB | 17.2 kB | โ |
| main-HASH.module.js gzip | 6.52 kB | 6.52 kB | โ |
| webpack-HASH.module.js | 1.53 kB | 1.53 kB | โ |
| webpack-HASH..dule.js gzip | 746 B | 746 B | โ |
| de003c3a9d30..42.module.js | 45.6 kB | 45.6 kB | โ |
| de003c3a9d30..dule.js gzip | 16.5 kB | 16.5 kB | โ |
| framework.5b..d3.module.js | 125 kB | 125 kB | โ |
| framework.5b..dule.js gzip | 39.4 kB | 39.4 kB | โ |
| Overall change | 190 kB | 190 kB | โ |
Client Pages
| | zeit/next.js canary | zeit/next.js canary | Change |
| - | - | - | - |
| _app.js | 1.81 kB | 1.81 kB | โ |
| _app.js gzip | 873 B | 873 B | โ |
| _error.js | 12 kB | 12 kB | โ |
| _error.js gzip | 4.73 kB | 4.73 kB | โ |
| hooks.js | 12.7 kB | 12.7 kB | โ |
| hooks.js gzip | 4.79 kB | 4.79 kB | โ |
| index.js | 318 B | 318 B | โ |
| index.js gzip | 222 B | 222 B | โ |
| link.js | 8.14 kB | 8.14 kB | โ |
| link.js gzip | 3.5 kB | 3.5 kB | โ |
| routerDirect.js | 408 B | 408 B | โ |
| routerDirect.js gzip | 281 B | 281 B | โ |
| withRouter.js | 419 B | 419 B | โ |
| withRouter.js gzip | 280 B | 280 B | โ |
| Overall change | 35.8 kB | 35.8 kB | โ |
Client Pages Modern
| | zeit/next.js canary | zeit/next.js canary | Change |
| - | - | - | - |
| _app.module.js | 1.7 kB | 1.7 kB | โ |
| _app.module.js gzip | 832 B | 832 B | โ |
| _error.module.js | 23.3 kB | 23.3 kB | โ |
| _error.module.js gzip | 8.59 kB | 8.59 kB | โ |
| hooks.module.js | 1.52 kB | 1.52 kB | โ |
| hooks.module.js gzip | 793 B | 793 B | โ |
| index.module.js | 294 B | 294 B | โ |
| index.module.js gzip | 223 B | 223 B | โ |
| link.module.js | 8.53 kB | 8.53 kB | โ |
| link.module.js gzip | 3.68 kB | 3.68 kB | โ |
| routerDirect.module.js | 394 B | 394 B | โ |
| routerDirect..dule.js gzip | 281 B | 281 B | โ |
| withRouter.module.js | 404 B | 404 B | โ |
| withRouter.m..dule.js gzip | 278 B | 278 B | โ |
| Overall change | 36.1 kB | 36.1 kB | โ |
Client Build Manifests
| | zeit/next.js canary | zeit/next.js canary | Change |
| - | - | - | - |
| _buildManifest.js | 81 B | 81 B | โ |
| _buildManifest.js gzip | 61 B | 61 B | โ |
| _buildManifest.module.js | 81 B | 81 B | โ |
| _buildManife..dule.js gzip | 61 B | 61 B | โ |
| Overall change | 162 B | 162 B | โ |
Rendered Page Sizes
| | zeit/next.js canary | zeit/next.js canary | Change |
| - | - | - | - |
| index.html | 3.62 kB | 3.62 kB | โ |
| index.html gzip | 945 B | 945 B | โ |
| link.html | 3.66 kB | 3.66 kB | โ |
| link.html gzip | 954 B | 954 B | โ |
| withRouter.html | 3.67 kB | 3.67 kB | โ |
| withRouter.html gzip | 942 B | 942 B | โ |
| Overall change | 10.9 kB | 10.9 kB | โ |
General
| | zeit/next.js canary | zeit/next.js canary | Change |
| - | - | - | - |
| buildDuration | 15.2s | 17.8s | โ ๏ธ +2.6s |
| nodeModulesSize | 48.3 MB | 48.3 MB | โ |
Client Bundles (main, webpack, commons)
| | zeit/next.js canary | zeit/next.js canary | Change |
| - | - | - | - |
| main-HASH.js | 18.9 kB | 18.9 kB | โ |
| main-HASH.js gzip | 6.79 kB | 6.79 kB | โ |
| webpack-HASH.js | 1.53 kB | 1.53 kB | โ |
| webpack-HASH.js gzip | 746 B | 746 B | โ |
| 4952ddcd88e7..2b8407376.js | 21.9 kB | 21.9 kB | โ |
| 4952ddcd88e7..7376.js gzip | 7.81 kB | 7.81 kB | โ |
| de003c3a9d30..6604acae7.js | 43.2 kB | 43.2 kB | โ |
| de003c3a9d30..cae7.js gzip | 15.5 kB | 15.5 kB | โ |
| framework.5b..dbaff70d3.js | 125 kB | 125 kB | โ |
| framework.5b..70d3.js gzip | 39.4 kB | 39.4 kB | โ |
| Overall change | 211 kB | 211 kB | โ |
Client Bundles (main, webpack, commons) Modern
| | zeit/next.js canary | zeit/next.js canary | Change |
| - | - | - | - |
| main-HASH.module.js | 17.2 kB | 17.2 kB | โ |
| main-HASH.module.js gzip | 6.52 kB | 6.52 kB | โ |
| webpack-HASH.module.js | 1.53 kB | 1.53 kB | โ |
| webpack-HASH..dule.js gzip | 746 B | 746 B | โ |
| de003c3a9d30..42.module.js | 45.6 kB | 45.6 kB | โ |
| de003c3a9d30..dule.js gzip | 16.5 kB | 16.5 kB | โ |
| framework.5b..d3.module.js | 125 kB | 125 kB | โ |
| framework.5b..dule.js gzip | 39.4 kB | 39.4 kB | โ |
| Overall change | 190 kB | 190 kB | โ |
Client Pages
| | zeit/next.js canary | zeit/next.js canary | Change |
| - | - | - | - |
| _app.js | 1.81 kB | 1.81 kB | โ |
| _app.js gzip | 873 B | 873 B | โ |
| _error.js | 12 kB | 12 kB | โ |
| _error.js gzip | 4.73 kB | 4.73 kB | โ |
| hooks.js | 12.7 kB | 12.7 kB | โ |
| hooks.js gzip | 4.79 kB | 4.79 kB | โ |
| index.js | 318 B | 318 B | โ |
| index.js gzip | 222 B | 222 B | โ |
| link.js | 8.14 kB | 8.14 kB | โ |
| link.js gzip | 3.5 kB | 3.5 kB | โ |
| routerDirect.js | 408 B | 408 B | โ |
| routerDirect.js gzip | 281 B | 281 B | โ |
| withRouter.js | 419 B | 419 B | โ |
| withRouter.js gzip | 280 B | 280 B | โ |
| Overall change | 35.8 kB | 35.8 kB | โ |
Client Pages Modern
| | zeit/next.js canary | zeit/next.js canary | Change |
| - | - | - | - |
| _app.module.js | 1.7 kB | 1.7 kB | โ |
| _app.module.js gzip | 832 B | 832 B | โ |
| _error.module.js | 23.3 kB | 23.3 kB | โ |
| _error.module.js gzip | 8.59 kB | 8.59 kB | โ |
| hooks.module.js | 1.52 kB | 1.52 kB | โ |
| hooks.module.js gzip | 793 B | 793 B | โ |
| index.module.js | 294 B | 294 B | โ |
| index.module.js gzip | 223 B | 223 B | โ |
| link.module.js | 8.53 kB | 8.53 kB | โ |
| link.module.js gzip | 3.68 kB | 3.68 kB | โ |
| routerDirect.module.js | 394 B | 394 B | โ |
| routerDirect..dule.js gzip | 281 B | 281 B | โ |
| withRouter.module.js | 404 B | 404 B | โ |
| withRouter.m..dule.js gzip | 278 B | 278 B | โ |
| Overall change | 36.1 kB | 36.1 kB | โ |
Client Build Manifests
| | zeit/next.js canary | zeit/next.js canary | Change |
| - | - | - | - |
| _buildManifest.js | 81 B | 81 B | โ |
| _buildManifest.js gzip | 61 B | 61 B | โ |
| _buildManifest.module.js | 81 B | 81 B | โ |
| _buildManife..dule.js gzip | 61 B | 61 B | โ |
| Overall change | 162 B | 162 B | โ |
Serverless bundles
| | zeit/next.js canary | zeit/next.js canary | Change |
| - | - | - | - |
| _error.js | 253 kB | 253 kB | โ |
| _error.js gzip | 67.9 kB | 67.9 kB | โ |
| hooks.html | 3.75 kB | 3.75 kB | โ |
| hooks.html gzip | 979 B | 979 B | โ |
| index.js | 254 kB | 254 kB | โ |
| index.js gzip | 68.2 kB | 68.2 kB | โ |
| link.js | 261 kB | 261 kB | โ |
| link.js gzip | 70.3 kB | 70.3 kB | โ |
| routerDirect.js | 255 kB | 255 kB | โ |
| routerDirect.js gzip | 68.3 kB | 68.3 kB | โ |
| withRouter.js | 254 kB | 254 kB | โ |
| withRouter.js gzip | 68.4 kB | 68.4 kB | โ |
| Overall change | 1.28 MB | 1.28 MB | โ |
Commit: 9af587930f2880daf6fab85914aa1973dd796129
The SRC directory is used to wrap pages, but two additional files are created during build, respectively next-env.d.ts and tsconfig.json.
cross-env NODE_ENV=production SERVER_ENV=prod PORT=8080 HTTPS=true next build src && tsc --project tsconfig.server.json
Most helpful comment
That's possible. Then you need to pass the
src
directory as your app directory. Like this: