Comments (5)
Hey @Maczuga , I've never dared to play with decorators and babel compiler :)
My intuitions:
-
Prefer
babel.config.js
rather than.babelrc
(must have in a monorepo structure)... You can convert it from the nextjs .babelrc example and add the plugins you need. -
You might have to use babelRoots at the top (jestjs/jest#7359). I'm nt sure if it's fixed...
Let me know if t helps or send me your babel config...
Happy new year !
PS:
Examples taken from older projects:
// file: <monorepoRoot>/babel.config/js
module.exports = {
// jest: https://github.com/facebook/jest/issues/7359
babelrcRoots: [ './apps/my-app/*' ],
presets: [ '@babel/preset-typescript' ],
};
// file <apps/my-app>/babel.config.js
module.exports = {
env: {
development: {
presets: [
[
'next/babel',
{
'preset-env': {},
'transform-runtime': {},
'styled-jsx': {},
'class-properties': {},
},
],
],
plugins: [
[
"@babel/plugin-proposal-decorators",
{
"legacy": true
}
]
],
},
production: {
presets: [
[
'next/babel',
{
'preset-env': {},
'transform-runtime': {},
'styled-jsx': {},
'class-properties': {},
},
],
],
plugins: [
[
"@babel/plugin-proposal-decorators",
{
"legacy": true
}
]
],
},
},
};
from nextjs-monorepo-example.
@belgattitude Happy new year to you too!
I didn't have any custom babel config file at that time, thought that Next.JS would take care of it.
The babel.config.js file in workspace directory helped with addition of this in my web-app:
websites/ts4u-website/babel.config.js
module.exports = {
presets: [
[
"next/babel",
],
],
plugins: [
["@babel/plugin-proposal-decorators", {"legacy": true}]
],
};
But now other issues remains, not related to babel this time, but either webpack or next.js itself trying to import server modules into client (like nodemailer, bcrypt etc), even if those are only imported in pages/api.ts files. Will post that in another issue for clearity.
from nextjs-monorepo-example.
@belgattitude The class properties was not needed in fact. Kinda copied those 2 lines from other issue on Next.JS. I have edited the previous reply accordingly.
And the bundle problem was in fact my own issue with barreling both client and server functions into single index file. I have split that dir separate client/server includes. The mono-repo with prop. decorators is now working better than ever before!
from nextjs-monorepo-example.
At least your babel config must have ["@babel/plugin-proposal-decorators", { "legacy": true }]
. See also https://stackoverflow.com/questions/54332378/now-sh-build-breaking-due-to-support-for-the-experimental-syntax-decorators-le/65502903#65502903
I've edited the snippet above, but haven't tested it 😄
from nextjs-monorepo-example.
@Maczuga nice !
Out of curiosity, is the class properties plugin required ?
And by the way the bundle problem is totally fixable in my experience. Be sure to never import backend classes into client side ones. I generally work with two containers (+/- di-backend, di-frontend).
from nextjs-monorepo-example.
Related Issues (20)
- Automated releases HOT 1
- Early cache invalidation in multistage Docker build HOT 4
- Problem with prisma in monorepo
- How debug server side for next.js `nextjs-app` using vscode? HOT 3
- Adding commitzen command HOT 2
- Action Required: Fix Renovate Configuration
- Does it support NodeNext .mjs, .mts ? HOT 8
- RFC: Move to pnpm HOT 1
- Example with standalone build HOT 3
- changeset publish does not replace workspace: ranges with current version in workspace HOT 4
- Best practice for add a backend server HOT 1
- nextjs-app compilation error and warning HOT 2
- Semantic error TS6059 File 'packages/ts-utils/src/index.ts' is not under 'rootDir' HOT 3
- Error: No mesh config file found HOT 1
- Make repo size lower
- add prettier for formatting and remove prettier for linting HOT 3
- Debug Nexjs app in monorepo with "NODE_OPTIONS='inspect'" HOT 10
- Deprecated package @types/prettier HOT 1
- storybook recognizing tailwind config from outside HOT 3
- Upgrade eslint to V9 and typescript-eslint v7 HOT 12
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nextjs-monorepo-example.