blitz-js / babel-plugin-superjson-next

Automatically transform your Next.js Pages to use SuperJSON
MIT License
125 stars 15 forks source link

Should `superjson` be a dev or prod dependency? #107

Closed Skn0tt closed 2 years ago

Skn0tt commented 2 years ago

Should superjson be a dev or prod dependency?

Originally posted by @nemanjam in https://github.com/blitz-js/babel-plugin-superjson-next/issues/19#issuecomment-1019099240

Skn0tt commented 2 years ago

I'd put them into prod dependency, since SuperJSON will need to be present in your application bundle in order for things to work. But considering that you're most likely using a bundler anyways, it won't make that much of a difference: https://jsramblings.com/do-dependencies-devdependencies-matter-when-using-webpack/ (this is for Webpack, but applies to any bundled workflow)

nemanjam commented 2 years ago

Thanks.

nemanjam commented 2 years ago

@Skn0tt currently I have dependencies like this in my Next.js project, and in dev all works fine, project builds for prod too, but I get runtime error in prod:

  "dependencies": {
    "superjson": "^1.8.0",
  },
  "devDependencies": {
    "babel-plugin-superjson-next": "^0.4.2",
  }
Error: Cannot find module 'babel-plugin-superjson-next/tools',
Require stack:,
- /app/.next/server/pages/index.js,
- /app/node_modules/next/dist/server/require.js,
- /app/node_modules/next/dist/server/next-server.js,
- /app/node_modules/next/dist/server/next.js,
- /app/dist/index.js,
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15),
    at Function.mod._resolveFilename (/app/node_modules/next/dist/build/webpack/require-hook.js:183:28),
    at Function.Module._load (node:internal/modules/cjs/loader:778:27),
    at Module.require (node:internal/modules/cjs/loader:1005:19),
    at require (node:internal/modules/cjs/helpers:102:18),
    at Object.1421 (/app/.next/server/pages/index.js:224:18),
    at __webpack_require__ (/app/.next/server/webpack-runtime.js:25:42),
    at /app/.next/server/pages/index.js:17:91,
    at Function.__webpack_require__.a (/app/.next/server/webpack-runtime.js:98:13),
    at Object.2119 (/app/.next/server/pages/index.js:11:21) {,
  code: 'MODULE_NOT_FOUND',,
  requireStack: [,
    '/app/.next/server/pages/index.js',,
    '/app/node_modules/next/dist/server/require.js',,
    '/app/node_modules/next/dist/server/next-server.js',,
    '/app/node_modules/next/dist/server/next.js',,
    '/app/dist/index.js',
  ],
},

https://github.com/blitz-js/superjson#using-with-nextjs

image

Skn0tt commented 2 years ago

Oh, forgot about /tools! Yup, babel-plugin-superjson-next needs to be a production dependency. Will update the README :)

nemanjam commented 2 years ago

Thanks.