From 5412071a7e754c9981faa39748e381721d5db5b7 Mon Sep 17 00:00:00 2001 From: Jeroen Claassens Date: Thu, 16 May 2024 10:27:37 +0000 Subject: [PATCH 1/5] feat: add subpath exports --- package.json | 32 +++++++++++++++++++++++++++----- scripts/update-exports.mjs | 29 +++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 5 deletions(-) create mode 100644 scripts/update-exports.mjs diff --git a/package.json b/package.json index 09acbf9a..e95f4354 100644 --- a/package.json +++ b/package.json @@ -13,9 +13,6 @@ "type": "git", "url": "https://github.com/receter/my-component-library" }, - "sideEffects": [ - "**/*.css" - ], "scripts": { "dev": "vite", "build": "tsc --p ./tsconfig-build.json && vite build", @@ -43,5 +40,30 @@ "vite": "^4.5.3", "vite-plugin-dts": "^3.7.3", "vite-plugin-lib-inject-css": "^2.0.1" - } -} + }, + "exports": { + ".": { + "types": "./dist/main.d.ts", + "default": "./dist/main.js" + }, + "./Button": { + "types": "./dist/components/Button/index.d.ts", + "default": "./dist/components/Button/index.js" + }, + "./Input": { + "types": "./dist/components/Input/index.d.ts", + "default": "./dist/components/Input/index.js" + }, + "./Label": { + "types": "./dist/components/Label/index.d.ts", + "default": "./dist/components/Label/index.js" + } + }, + "sideEffects": [ + "**/*.css", + "./dist/main.js", + "./dist/components/Button/index.js", + "./dist/components/Input/index.js", + "./dist/components/Label/index.js" + ] +} \ No newline at end of file diff --git a/scripts/update-exports.mjs b/scripts/update-exports.mjs new file mode 100644 index 00000000..8bf959f4 --- /dev/null +++ b/scripts/update-exports.mjs @@ -0,0 +1,29 @@ +import { readdir, readFile, writeFile } from 'node:fs/promises'; + +const corePackageJsonPath = new URL('../package.json', import.meta.url); +const corePackageJson = JSON.parse(await readFile(corePackageJsonPath, 'utf-8')); + +const coreComponentsDirectoryPath = new URL('../lib/components/', import.meta.url); +const coreComponentsDirectory = await readdir(coreComponentsDirectoryPath); + +const paths = { + '.': { + types: './dist/main.d.ts', + default: './dist/main.js' + } +}; + +for (const item of coreComponentsDirectory) { + const filesInDirectory = await readdir(new URL(`${item}/`, coreComponentsDirectoryPath)); + if (filesInDirectory.length) { + paths[`./${item}`] = { + types: `./dist/components/${item}/${filesInDirectory[0].replace(/\.tsx$/, '.d.ts')}`, + default: `./dist/components/${item}/${filesInDirectory[0].replace(/\.tsx$/, '.js')}` + }; + } +} + +corePackageJson.exports = paths; +corePackageJson.sideEffects = ["**/*.css", ...Object.values(paths).map(e => e.default)]; + +await writeFile(corePackageJsonPath, JSON.stringify(corePackageJson, null, ' ')); \ No newline at end of file From 105112ab738e795871bbdbda3c1b7da903f1c972 Mon Sep 17 00:00:00 2001 From: Jeroen Claassens Date: Thu, 16 May 2024 10:30:16 +0000 Subject: [PATCH 2/5] build: run script on prepack --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index e95f4354..a108aa95 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "dev": "vite", "build": "tsc --p ./tsconfig-build.json && vite build", "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "prepack": "node scripts/update-exports.mjs", "preview": "vite preview" }, "peerDependencies": { From d34ade1dee068c5af364cff15d37eb02bc03eaaa Mon Sep 17 00:00:00 2001 From: Jeroen Claassens Date: Thu, 16 May 2024 10:30:55 +0000 Subject: [PATCH 3/5] chore: EOF new line --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a108aa95..d429432c 100644 --- a/package.json +++ b/package.json @@ -67,4 +67,4 @@ "./dist/components/Input/index.js", "./dist/components/Label/index.js" ] -} \ No newline at end of file +} From 1ad51d3cfb05895639370de660a529306ec45b1a Mon Sep 17 00:00:00 2001 From: Jeroen Claassens Date: Thu, 16 May 2024 10:31:18 +0000 Subject: [PATCH 4/5] chore: EOF new line --- scripts/update-exports.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/update-exports.mjs b/scripts/update-exports.mjs index 8bf959f4..0bd7bc8a 100644 --- a/scripts/update-exports.mjs +++ b/scripts/update-exports.mjs @@ -26,4 +26,4 @@ for (const item of coreComponentsDirectory) { corePackageJson.exports = paths; corePackageJson.sideEffects = ["**/*.css", ...Object.values(paths).map(e => e.default)]; -await writeFile(corePackageJsonPath, JSON.stringify(corePackageJson, null, ' ')); \ No newline at end of file +await writeFile(corePackageJsonPath, JSON.stringify(corePackageJson, null, ' ')); From 556c96e1a83cbc4290a3df58bac76f131817d515 Mon Sep 17 00:00:00 2001 From: Jeroen Claassens Date: Thu, 16 May 2024 10:32:06 +0000 Subject: [PATCH 5/5] chore: indents --- scripts/update-exports.mjs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/scripts/update-exports.mjs b/scripts/update-exports.mjs index 0bd7bc8a..8c008e81 100644 --- a/scripts/update-exports.mjs +++ b/scripts/update-exports.mjs @@ -8,19 +8,19 @@ const coreComponentsDirectory = await readdir(coreComponentsDirectoryPath); const paths = { '.': { - types: './dist/main.d.ts', - default: './dist/main.js' - } + types: './dist/main.d.ts', + default: './dist/main.js' + } }; for (const item of coreComponentsDirectory) { - const filesInDirectory = await readdir(new URL(`${item}/`, coreComponentsDirectoryPath)); - if (filesInDirectory.length) { - paths[`./${item}`] = { - types: `./dist/components/${item}/${filesInDirectory[0].replace(/\.tsx$/, '.d.ts')}`, - default: `./dist/components/${item}/${filesInDirectory[0].replace(/\.tsx$/, '.js')}` - }; - } + const filesInDirectory = await readdir(new URL(`${item}/`, coreComponentsDirectoryPath)); + if (filesInDirectory.length) { + paths[`./${item}`] = { + types: `./dist/components/${item}/${filesInDirectory[0].replace(/\.tsx$/, '.d.ts')}`, + default: `./dist/components/${item}/${filesInDirectory[0].replace(/\.tsx$/, '.js')}` + }; + } } corePackageJson.exports = paths;