1.1.0 • Published 5 months ago

apply-publishconfig v1.1.0

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

apply-publishconfig

NPM version NPM downloads Release Workflow Status (with event) Tests Workflow Status (with event)

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:

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

...
1.0.2

5 months ago

1.1.0

5 months ago

1.0.1

5 months ago

1.0.3

5 months ago

1.0.0

5 months ago