apply-publishconfig
v1.1.0
Published
Apply package.json publishConfig
Downloads
1,763
Readme
apply-publishconfig
Quickly apply a publishConfig into a dependency package.json for deployment
Overview
This package will apply a publishConfig
in-place to a project. I have thrown this solution together to build Node server applications with Turborepo internal packages, whilst maintaining the full local development experience. I found a PR that suggests that this feature is implemented into pnpm deploy
, but it wasn't working on my end. This was built with Turborepo in mind, but there's no reason why it cannot also be used in other contexts.
Related discussions:
- https://github.com/vercel/turbo/discussions/4509
- https://github.com/vercel/turbo/discussions/6751
Running the script will edit the internal package's package.json
in-place and will apply the publishConfig
. Supported fields include main
and exports
diff --git a/package.json b/package.json
index f3df0d5..a49f857 100644
--- a/package.json
+++ b/package.json
@@ -3,7 +3,7 @@
"version": "1.0.0",
- "main": "./src/index.ts",
+ "main": "./dist/index.js",
"types": "./src/index.ts",
"scripts": {
"build": "tsup src/index.ts",
@@ -16,9 +16,6 @@
- "publishConfig": {
- "main": "./dist/index.js"
- },
Usage
Install the package using your package manager:
$ pnpm add -D apply-publishconfig
Add a script to your internal package's package.json
with a publishConfig
:
"main": "./src/index.ts",
"types": "./src/index.ts",
"scripts": {
"publish:apply": "apply-publishconfig"
},
"publishConfig": {
"main": "./dist/index.js"
},
Add a pipeline to your root turbo.json
:
{
"$schema": "https://turbo.build/schema.json",
"pipeline": {
"publish:apply": {
"cache": false
}
}
}
Now when building your app, you can execute the publish:apply
pipeline:
$ turbo run publish:apply
Docker example
...
RUN --mount=type=bind,source=.git,target=.git \
turbo run build -F "${WORKSPACE}"... \
&& turbo run publish:apply -F "${WORKSPACE}"...
RUN --mount=type=cache,id=pnpm,target=/pnpm/store \
pnpm deploy -F "${WORKSPACE}" --prod deployed
...