From 67642e2809760cb5691e5c4b11df3bea3c54c23d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20S=C3=A1nchez?= Date: Wed, 29 Nov 2023 13:34:52 +0100 Subject: [PATCH] feat!: include dual cjs/esm in package exports (#330) --- package.json | 104 +++++++++++++++++++++++++++++----------- pnpm-lock.yaml | 61 +++++++++++++++++++++++ scripts/postbuild.ts | 23 --------- src/core/icon-sets.json | 3 ++ tsup.config.ts | 7 +-- 5 files changed, 140 insertions(+), 58 deletions(-) delete mode 100644 scripts/postbuild.ts diff --git a/package.json b/package.json index 24dc16d..e9f303b 100644 --- a/package.json +++ b/package.json @@ -15,40 +15,75 @@ "bugs": "https://github.com/unplugin/unplugin-icons/issues", "exports": { ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.mjs", - "require": "./dist/index.cjs" + "import": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "require": { + "types": "./dist/index.d.cts", + "default": "./dist/index.cjs" + } }, "./*": "./*", "./esbuild": { - "types": "./dist/esbuild.d.ts", - "import": "./dist/esbuild.mjs", - "require": "./dist/esbuild.cjs" + "import": { + "types": "./dist/esbuild.d.ts", + "default": "./dist/esbuild.js" + }, + "require": { + "types": "./dist/esbuild.d.cts", + "default": "./dist/esbuild.cjs" + } }, "./loaders": { - "types": "./dist/loaders.d.ts", - "import": "./dist/loaders.mjs", - "require": "./dist/loaders.cjs" + "import": { + "types": "./dist/loaders.d.ts", + "default": "./dist/loaders.js" + }, + "require": { + "types": "./dist/loaders.d.cts", + "default": "./dist/loaders.cjs" + } }, "./nuxt": { - "types": "./dist/nuxt.d.ts", - "import": "./dist/nuxt.mjs", - "require": "./dist/nuxt.cjs" + "import": { + "types": "./dist/nuxt.d.ts", + "default": "./dist/nuxt.js" + }, + "require": { + "types": "./dist/nuxt.d.cts", + "default": "./dist/nuxt.cjs" + } }, "./resolver": { - "types": "./dist/resolver.d.ts", - "import": "./dist/resolver.mjs", - "require": "./dist/resolver.cjs" + "import": { + "types": "./dist/resolver.d.ts", + "default": "./dist/resolver.js" + }, + "require": { + "types": "./dist/resolver.d.cts", + "default": "./dist/resolver.cjs" + } }, "./rollup": { - "types": "./dist/rollup.d.ts", - "import": "./dist/rollup.mjs", - "require": "./dist/rollup.cjs" + "import": { + "types": "./dist/rollup.d.ts", + "default": "./dist/rollup.js" + }, + "require": { + "types": "./dist/rollup.d.cts", + "default": "./dist/rollup.cjs" + } }, "./types": { - "types": "./dist/types.d.ts", - "import": "./dist/types.mjs", - "require": "./dist/types.cjs" + "import": { + "types": "./dist/types.d.ts", + "default": "./dist/types.js" + }, + "require": { + "types": "./dist/types.d.cts", + "default": "./dist/types.cjs" + } }, "./types/astro": { "types": "./types/astro.d.ts" @@ -84,18 +119,28 @@ "types": "./types/web-components.d.ts" }, "./vite": { - "types": "./dist/vite.d.ts", - "import": "./dist/vite.mjs", - "require": "./dist/vite.cjs" + "import": { + "types": "./dist/vite.d.ts", + "default": "./dist/vite.js" + }, + "require": { + "types": "./dist/vite.d.cts", + "default": "./dist/vite.cjs" + } }, "./webpack": { - "types": "./dist/webpack.d.ts", - "import": "./dist/webpack.mjs", - "require": "./dist/webpack.cjs" + "import": { + "types": "./dist/webpack.d.ts", + "default": "./dist/webpack.js" + }, + "require": { + "types": "./dist/webpack.d.cts", + "default": "./dist/webpack.cjs" + } } }, "main": "dist/index.cjs", - "module": "dist/index.mjs", + "module": "dist/index.js", "types": "dist/index.d.ts", "typesVersions": { "*": { @@ -111,7 +156,7 @@ "types" ], "scripts": { - "build": "esno scripts/prebuild.ts && tsup && esno scripts/postbuild.ts", + "build": "esno scripts/prebuild.ts && tsup", "dev": "esno scripts/prebuild.ts && tsup --watch src", "example:build": "npm -C examples/vite-vue3 run build", "example:dev": "npm -C examples/vite-vue3 run dev", @@ -170,6 +215,7 @@ "eslint": "^8.53.0", "esno": "^4.0.0", "fast-glob": "^3.3.2", + "publint": "^0.2.5", "rollup": "^4.4.0", "tsup": "^7.2.0", "typescript": "^5.2.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 498bf17..70255a2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -78,6 +78,9 @@ importers: fast-glob: specifier: ^3.3.2 version: 3.3.2 + publint: + specifier: ^0.2.5 + version: 0.2.5 rollup: specifier: ^4.4.0 version: 4.4.0 @@ -8764,6 +8767,17 @@ packages: path-is-absolute: 1.0.1 dev: true + /glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + dev: true + /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -9293,6 +9307,13 @@ packages: /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + /ignore-walk@5.0.1: + resolution: {integrity: sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + minimatch: 5.1.6 + dev: true + /ignore@5.2.4: resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} engines: {node: '>= 4'} @@ -10718,6 +10739,13 @@ packages: brace-expansion: 1.1.11 dev: true + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimatch@9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} @@ -11014,6 +11042,29 @@ packages: engines: {node: '>=10'} dev: true + /npm-bundled@2.0.1: + resolution: {integrity: sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dependencies: + npm-normalize-package-bin: 2.0.0 + dev: true + + /npm-normalize-package-bin@2.0.0: + resolution: {integrity: sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + dev: true + + /npm-packlist@5.1.3: + resolution: {integrity: sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + hasBin: true + dependencies: + glob: 8.1.0 + ignore-walk: 5.0.1 + npm-bundled: 2.0.1 + npm-normalize-package-bin: 2.0.0 + dev: true + /npm-run-path@2.0.2: resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} engines: {node: '>=4'} @@ -12259,6 +12310,16 @@ packages: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} dev: true + /publint@0.2.5: + resolution: {integrity: sha512-eoQiP0WXkxkpth1fMLoS1I/6BQoxKNZxTAAnFjPgURFrJulC5D5Uifk49a9kfNCYmcza9E/ZkbFhQQdjkmKAbg==} + engines: {node: '>=16'} + hasBin: true + dependencies: + npm-packlist: 5.1.3 + picocolors: 1.0.0 + sade: 1.8.1 + dev: true + /pump@3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} dependencies: diff --git a/scripts/postbuild.ts b/scripts/postbuild.ts deleted file mode 100644 index a19bb3b..0000000 --- a/scripts/postbuild.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { basename, resolve } from 'node:path' -import { promises as fs } from 'node:fs' -import { fileURLToPath } from 'node:url' -import fg from 'fast-glob' - -async function run() { - const __dirname = fileURLToPath(new URL('.', import.meta.url)) - // fix cjs exports - const files = await fg('*.cjs', { - ignore: ['index.cjs', 'chunk-*', 'types.cjs', 'loaders.cjs'], - absolute: true, - cwd: resolve(__dirname, '../dist'), - }) - for (const file of files) { - console.log('[postbuild]', basename(file)) - let code = await fs.readFile(file, 'utf8') - code = code.replace('exports.default =', 'module.exports =') - code += 'exports.default = module.exports;' - await fs.writeFile(file, code) - } -} - -run() diff --git a/src/core/icon-sets.json b/src/core/icon-sets.json index 048d0f0..d80829b 100644 --- a/src/core/icon-sets.json +++ b/src/core/icon-sets.json @@ -90,6 +90,7 @@ "iwwa", "jam", "la", + "lets-icons", "line-md", "logos", "ls", @@ -98,6 +99,7 @@ "maki", "map", "material-symbols", + "material-symbols-light", "mdi", "mdi-light", "medical-icon", @@ -106,6 +108,7 @@ "mi", "mingcute", "mono-icons", + "mynaui", "nimbus", "nonicons", "noto", diff --git a/tsup.config.ts b/tsup.config.ts index 9db7d2c..cf0a93d 100644 --- a/tsup.config.ts +++ b/tsup.config.ts @@ -4,7 +4,7 @@ export const tsup: Options = { splitting: true, clean: true, dts: true, - entryPoints: [ + entry: [ 'src/*.ts', ], format: [ @@ -15,9 +15,4 @@ export const tsup: Options = { 'vue', '@iconify/json/package.json', ], - outExtension({ format }) { - return { - js: format === 'cjs' ? '.cjs' : '.mjs', - } - }, }