Revert .mjs modules in build for Lucide React (#1471)

* switch to different build strategy for dynamicIconImports

* add remove for dynamicIconImports files
This commit is contained in:
Eric Fennis
2023-08-06 15:47:07 +02:00
committed by GitHub
parent 0221022e24
commit 9463b2e445
3 changed files with 37 additions and 43 deletions

3
.gitignore vendored
View File

@@ -18,6 +18,9 @@ packages/**/src/icons/*.ts
packages/**/src/icons/*.tsx packages/**/src/icons/*.tsx
packages/**/src/aliases.ts packages/**/src/aliases.ts
packages/**/src/dynamicIconImports.ts packages/**/src/dynamicIconImports.ts
packages/**/dynamicIconImports.js
packages/**/dynamicIconImports.d.ts
packages/**/dynamicIconImports.js.map
packages/**/LICENSE packages/**/LICENSE
categories.json categories.json
tags.json tags.json

View File

@@ -1,7 +1,7 @@
{ {
"name": "lucide-react", "name": "lucide-react",
"description": "A Lucide icon library package for React applications", "description": "A Lucide icon library package for React applications",
"version": "0.0.1", "version": "0.263.2-beta.0",
"license": "ISC", "license": "ISC",
"homepage": "https://lucide.dev", "homepage": "https://lucide.dev",
"bugs": "https://github.com/lucide-icons/lucide/issues", "bugs": "https://github.com/lucide-icons/lucide/issues",
@@ -10,45 +10,24 @@
"url": "https://github.com/lucide-icons/lucide.git", "url": "https://github.com/lucide-icons/lucide.git",
"directory": "packages/lucide-react" "directory": "packages/lucide-react"
}, },
"type": "module",
"author": "Eric Fennis", "author": "Eric Fennis",
"amdName": "lucide-react", "amdName": "lucide-react",
"exports": { "main": "dist/cjs/lucide-react.js",
".": {
"import": "./dist/esm/lucide-react.mjs",
"require": "./dist/cjs/lucide-react.cjs",
"types": "./dist/lucide-react.d.ts"
},
"./icons": {
"import": "./dist/esm/icons/index.mjs",
"require": "./dist/cjs/lucide-react.cjs"
},
"./dynamicIconImports": {
"import": "./dist/esm/dynamicIconImports.mjs",
"types": "./dist/dynamicIconImports.d.ts"
},
"./src/createLucideIcon": {
"import": "./src/createLucideIcon.ts"
}
},
"typesVersions": {
"*": {
"dynamicIconImports": ["./dist/dynamicIconImports.d.ts"]
}
},
"main": "dist/cjs/lucide-react.cjs",
"main:umd": "dist/umd/lucide-react.js", "main:umd": "dist/umd/lucide-react.js",
"module": "dist/esm/lucide-react.mjs", "module": "dist/esm/lucide-react.js",
"unpkg": "dist/umd/lucide-react.min.js", "unpkg": "dist/umd/lucide-react.min.js",
"typings": "dist/lucide-react.d.ts", "typings": "dist/lucide-react.d.ts",
"sideEffects": false, "sideEffects": false,
"files": [ "files": [
"dist" "dist",
"dynamicIconImports.js",
"dynamicIconImports.js.map",
"dynamicIconImports.d.ts"
], ],
"scripts": { "scripts": {
"build": "pnpm clean && pnpm copy:license && pnpm build:icons && pnpm typecheck && pnpm build:bundles", "build": "pnpm clean && pnpm copy:license && pnpm build:icons && pnpm typecheck && pnpm build:bundles",
"copy:license": "cp ../../LICENSE ./LICENSE", "copy:license": "cp ../../LICENSE ./LICENSE",
"clean": "rm -rf dist && rm -rf stats && rm -rf ./src/icons/*.ts", "clean": "rm -rf dist && rm -rf stats && rm -rf ./src/icons/*.ts && rm -f dynamicIconImports.*",
"build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mjs --renderUniqueKey --withAliases --withDynamicImports --aliasesFileExtension=.ts --iconFileExtension=.ts --exportFileName=index.ts", "build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mjs --renderUniqueKey --withAliases --withDynamicImports --aliasesFileExtension=.ts --iconFileExtension=.ts --exportFileName=index.ts",
"build:types": "node ./scripts/buildTypes.mjs", "build:types": "node ./scripts/buildTypes.mjs",
"build:bundles": "rollup -c ./rollup.config.mjs", "build:bundles": "rollup -c ./rollup.config.mjs",

View File

@@ -9,39 +9,46 @@ const inputs = [`src/lucide-react.ts`];
const bundles = [ const bundles = [
{ {
format: 'umd', format: 'umd',
extension: 'js',
inputs, inputs,
outputDir, outputDir,
minify: true, minify: true,
}, },
{ {
format: 'umd', format: 'umd',
extension: 'js',
inputs, inputs,
outputDir, outputDir,
}, },
{ {
format: 'cjs', format: 'cjs',
extension: 'cjs',
inputs, inputs,
outputDir, outputDir,
aliasesSupport: true, aliasesSupport: true,
}, },
{ {
format: 'esm', format: 'esm',
extension: 'mjs', inputs,
inputs: [
...inputs,
'src/dynamicIconImports.ts',
],
outputDir, outputDir,
preserveModules: true, preserveModules: true,
aliasesSupport: true, aliasesSupport: true,
}, },
{
format: 'esm',
inputs: ['src/dynamicIconImports.ts'],
outputFile: 'dynamicIconImports.js',
aliasesSupport: true,
external: [/src/],
paths: (id) => {
if (id.match(/src/)) {
const [, modulePath] = id.match(/src\/(.*)\.ts/)
return `dist/esm/${modulePath}.js`
}
}
},
]; ];
const configs = bundles const configs = bundles
.map(({ inputs, outputDir, format, minify, preserveModules, aliasesSupport, extension }) => .map(({ inputs, outputDir, outputFile, format, minify, preserveModules, aliasesSupport, entryFileNames, external = [], paths }) =>
inputs.map(input => ({ inputs.map(input => ({
input, input,
plugins: [ plugins: [
@@ -57,17 +64,22 @@ const configs = bundles
), ),
...plugins(pkg, minify) ...plugins(pkg, minify)
], ],
external: ['react', 'prop-types'], external: [
'react',
'prop-types',
...external
],
output: { output: {
name: packageName, name: packageName,
...(preserveModules ...(preserveModules
? { ? {
dir:`${outputDir}/${format}`, dir:`${outputDir}/${format}`,
entryFileNames: `[name].${extension}`,
} }
: { : {
file: `${outputDir}/${format}/${outputFileName}${minify ? '.min' : ''}.${extension}`, file: outputFile ?? `${outputDir}/${format}/${outputFileName}${minify ? '.min' : ''}.js`,
}), }),
paths,
entryFileNames,
format, format,
sourcemap: true, sourcemap: true,
preserveModules, preserveModules,
@@ -84,7 +96,7 @@ export default [
{ {
input: 'src/dynamicIconImports.ts', input: 'src/dynamicIconImports.ts',
output: [{ output: [{
file: `dist/dynamicIconImports.d.ts`, format: "es" file: `dynamicIconImports.d.ts`, format: "es"
}], }],
plugins: [dts()], plugins: [dts()],
}, },