forked from reworkcss/css
-
Notifications
You must be signed in to change notification settings - Fork 18
Closed
Labels
enhancementNew feature or requestNew feature or request
Description
The problem
tsconfig.json:
"module": "NodeNext",
"moduleResolution": "NodeNext",TypeScript code:
import { parse } from '@adobe/css-tools';Result – error from tsc:
- Could not find a declaration file for module '@adobe/css-tools'. '~/my-lib/node_modules/@adobe/css-tools/dist/index.mjs' implicitly has an 'any' type.
- There are types at '~/my-lib/node_modules/@adobe/css-tools/dist/types.d.ts', but this result could not be resolved when respecting package.json "exports". The '@adobe/css-tools' library may need to update its package.json or typings.
Solutions
Quickest fix – change package.json:
"exports": {
"import": "./dist/index.mjs",
"types": "./dist/types.d.ts",
"require": "./dist/index.cjs"
},In the long run, you don’t need "main", "module" and "types" (anywhere!) anymore, as these are superseded by "exports" and modern TypeScript .d.ts resolution. You only have to rename:
mv types.d.ts index.d.mtsPossibly useful
- TypeScript documentation on package
"exports": https://www.typescriptlang.org/docs/handbook/modules/reference.html#packagejson-exports - This tool was recommended to me as a linter for packages with TypeScript types (haven’t used it yet though): https://github.com/arethetypeswrong/arethetypeswrong.github.io
- I’m not sure how well
.d.mtsworks with older TypeScript versions. There, you may have some success with thepackage.jsonproperty"typesVersions"(but in general it’s better if you don’t use it and only rely on"exports"): https://2ality.com/2021/06/typescript-esm-nodejs.html
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request