- Do you use
dependenciesMeta.*.injected = true
? - Are you tired of the fight against the balance between ergonomics and "dependencies being correct"?
This package will solve all your problems!
-
Install the dependency.
pnpm i pnpm-sync-dependencies-meta-injected -D
-
In each of your projects that declare a
dependenciesMeta.*.injected = true
, add a_syncPnpm
script in your package.json:"_syncPnpm": "pnpm sync-dependencies-meta-injected"
-
In each of your projects that includes
_syncPnpm
, re-configure your project'sstart
command to run_syncPnpm
in watch mode so that you can continually work on your injected dependencies and have updates automatically re-synced as they are built."start": "concurrently 'ember serve' 'pnpm _syncPnpm --watch' --names 'tests serve,tests sync deps'",
By using
concurrently
, we can run our dev server as well as the_syncPnpm
task in watch mode in parallel.
When using turborepo, we can automatically sync the injected dependencies for all tasks defined in turbo.json
-
In your
turbo.json
, configure a_syncPnpm
task:"_syncPnpm": { "dependsOn": ["^build"], "cache": false },
It must not have a cache, because we need to modify the
.pnpm
directory in the top-levelnode_modules
folder. -
In your
turbo.json
, configure each task that relies on^build
to also rely on_syncPnpm
(no^
) -- this, combined with the above will sync the hard links thatpnpm
uses fordependenciesMeta.*.injected
after the dependencies are built."test": { "outputs": [], - "dependsOn": ["^build"] + "dependsOn": ["_syncPnpm"] }, "build": { "outputs": ["dist/**"], - "dependsOn": ["^build"] + "dependsOn": ["_syncPnpm"] }, // etc
Add
DEBUG=sync-pnpm
before the invocation.
Example of adding to the package.json#scripts
"_syncPnpm": "DEBUG=sync-pnpm pnpm sync-dependencies-meta-injected"
Or on-the-fly:
DEBUG=sync-pnpm pnpm _syncPnpm