You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is an optimization that reduces the client bundle size by ~1.1 KB by no longer bundling entire package.json files just to read version numbers used for analytics.
Replaced import pkg from '../../package.json' with a build-time constant, NEXT_CLOUDINARY_VERSION, injected via tsup's define option. Only the version string is now emitted instead of the whole manifest (including scripts, devDependencies, repository, etc.).
Switched the Next.js import to a named import (import { version as nextVersion } from 'next/package.json') so bundlers that support JSON tree-shaking can drop unused fields.
Added vitest.config.ts with the same define so the unit tests continue to resolve NEXT_CLOUDINARY_VERSION.
Result
dist/index.mjs size is reduced as shown in the comparison below
the dist/index.js file before and after the change
Another way I came across for getting the Next.js version is window.next.version, which Next.js exposes on the client. This avoids reading next/package.json directly, but since it doesnt work in server I dont think we can use it here.
I couldn't find an equivalent built-in way to access the version on the server, so reading it from the package metadata seemed like the most straightforward approach.
Let me know if you have any other ideas.
This PR was originally written against the tsup build. Since then, the project has moved to Preconstruct, so I’ve rebased the branch and adapted the fix.
Could someone please review when you have a chance? Happy to adjust anything.
This branch has not been deployed
No deployments
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
This is an optimization that reduces the client bundle size by ~1.1 KB by no longer bundling entire
package.jsonfiles just to read version numbers used for analytics.getCloudinaryAnalyticsinnext-cloudinary/src/lib/cloudinary.ts:70attaches SDK/tech versions to every generated Cloudinary URL:Those constants come from next-cloudinary/src/constants/analytics.ts, which imported both:
This PR mainly fixes the second issue (Fixes #671)
Changes
Result
dist/index.mjs size is reduced as shown in the comparison below
the
dist/index.jsfile before and after the changeindex.js
index.js
Type of change
Checklist