mirror of
https://github.com/lucide-icons/lucide.git
synced 2026-11-12 13:38:32 +00:00
Move dynamicImportFile to dedicated file (#1440)
* test this * Fixes dynamicImportsMap and types
This commit is contained in:
@@ -138,7 +138,8 @@ In NextJS [the dynamic function](https://nextjs.org/docs/pages/building-your-app
|
||||
|
||||
```tsx
|
||||
import dynamic from 'next/dynamic'
|
||||
import { dynamicIconImports, LucideProps } from 'lucide-react';
|
||||
import { LucideProps } from 'lucide-react';
|
||||
import dynamicIconImports from 'lucide-react/dynamicIconImports';
|
||||
|
||||
interface IconProps extends LucideProps {
|
||||
name: keyof typeof dynamicIconImports;
|
||||
|
||||
@@ -112,7 +112,8 @@ In NextJS [the dynamic function](https://nextjs.org/docs/pages/building-your-app
|
||||
|
||||
```tsx
|
||||
import dynamic from 'next/dynamic'
|
||||
import { dynamicIconImports, LucideProps } from 'lucide-react';
|
||||
import { LucideProps } from 'lucide-react';
|
||||
import dynamicIconImports from 'lucide-react/dynamicIconImports';
|
||||
|
||||
interface IconProps extends LucideProps {
|
||||
name: keyof typeof dynamicIconImports;
|
||||
|
||||
@@ -10,8 +10,29 @@
|
||||
"url": "https://github.com/lucide-icons/lucide.git",
|
||||
"directory": "packages/lucide-react"
|
||||
},
|
||||
"type": "module",
|
||||
"author": "Eric Fennis",
|
||||
"amdName": "lucide-react",
|
||||
"exports": {
|
||||
".": {
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"typesVersions": {
|
||||
"*": {
|
||||
"dynamicIconImports": ["./dist/dynamicIconImports.d.ts"]
|
||||
}
|
||||
},
|
||||
"main": "dist/cjs/lucide-react.js",
|
||||
"main:umd": "dist/umd/lucide-react.js",
|
||||
"module": "dist/esm/lucide-react.js",
|
||||
|
||||
@@ -9,34 +9,39 @@ const inputs = [`src/lucide-react.ts`];
|
||||
const bundles = [
|
||||
{
|
||||
format: 'umd',
|
||||
extension: 'js',
|
||||
inputs,
|
||||
outputDir,
|
||||
minify: true,
|
||||
},
|
||||
{
|
||||
format: 'umd',
|
||||
extension: 'js',
|
||||
inputs,
|
||||
outputDir,
|
||||
},
|
||||
{
|
||||
format: 'cjs',
|
||||
extension: 'cjs',
|
||||
inputs,
|
||||
outputDir,
|
||||
aliasesSupport: true,
|
||||
withDynamicImports: true,
|
||||
},
|
||||
{
|
||||
format: 'esm',
|
||||
inputs,
|
||||
extension: 'mjs',
|
||||
inputs: [
|
||||
...inputs,
|
||||
'src/dynamicIconImports.ts',
|
||||
],
|
||||
outputDir,
|
||||
preserveModules: true,
|
||||
aliasesSupport: true,
|
||||
withDynamicImports: true,
|
||||
},
|
||||
];
|
||||
|
||||
const configs = bundles
|
||||
.map(({ inputs, outputDir, format, minify, preserveModules, aliasesSupport, withDynamicImports }) =>
|
||||
.map(({ inputs, outputDir, format, minify, preserveModules, aliasesSupport, extension }) =>
|
||||
inputs.map(input => ({
|
||||
input,
|
||||
plugins: [
|
||||
@@ -50,15 +55,6 @@ const configs = bundles
|
||||
}),
|
||||
] : []
|
||||
),
|
||||
...(
|
||||
!withDynamicImports ? [
|
||||
replace({
|
||||
"export { default as dynamicIconImports } from './dynamicIconImports';": '',
|
||||
delimiters: ['', ''],
|
||||
preventAssignment: false,
|
||||
}),
|
||||
] : []
|
||||
),
|
||||
...plugins(pkg, minify)
|
||||
],
|
||||
external: ['react', 'prop-types'],
|
||||
@@ -67,9 +63,10 @@ const configs = bundles
|
||||
...(preserveModules
|
||||
? {
|
||||
dir: `${outputDir}/${format}`,
|
||||
entryFileNames: `[name].${extension}`,
|
||||
}
|
||||
: {
|
||||
file: `${outputDir}/${format}/${outputFileName}${minify ? '.min' : ''}.js`,
|
||||
file: `${outputDir}/${format}/${outputFileName}${minify ? '.min' : ''}.${extension}`,
|
||||
}),
|
||||
format,
|
||||
sourcemap: true,
|
||||
@@ -84,6 +81,13 @@ const configs = bundles
|
||||
.flat();
|
||||
|
||||
export default [
|
||||
{
|
||||
input: 'src/dynamicIconImports.ts',
|
||||
output: [{
|
||||
file: `dist/dynamicIconImports.d.ts`, format: "es"
|
||||
}],
|
||||
plugins: [dts()],
|
||||
},
|
||||
{
|
||||
input: inputs[0],
|
||||
output: [{
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
export * from './icons';
|
||||
export * as icons from './icons';
|
||||
export * from './aliases';
|
||||
export { default as dynamicIconImports } from './dynamicIconImports';
|
||||
export {
|
||||
default as createLucideIcon,
|
||||
type IconNode,
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import { render, cleanup, waitFor } from '@testing-library/react'
|
||||
import { Pen, Edit2, Grid, dynamicIconImports, LucideProps } from '../src/lucide-react';
|
||||
import { Pen, Edit2, Grid, LucideProps } from '../src/lucide-react';
|
||||
import { Suspense, lazy } from 'react';
|
||||
import dynamicIconImports from '../src/dynamicIconImports';
|
||||
|
||||
describe('Using lucide icon components', () => {
|
||||
it('should render an component', () => {
|
||||
|
||||
Reference in New Issue
Block a user