Skip to content

Commit bbad8c7

Browse files
nicksrandallAndaristemmatown
authored
Added package.json#exports to all packages and added a worker condition where needed (emotion-js#2819)
* fix spelling * adding yarn.lock * try again * update preconstruct * Update exports configs with extras * fixed Flow task * Add `.d.ts` reexports and enforce `preconstruct.exports` globally * Remove unnecessary preconstruct.exports: true * Add changesets Co-authored-by: Mateusz Burzyński <mateuszburzynski@gmail.com> Co-authored-by: mitchellhamilton <mitchell@hamil.town>
1 parent ac94be9 commit bbad8c7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+468
-55
lines changed

.changeset/seven-ways-collect.md

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
---
2+
'@emotion/babel-plugin': minor
3+
'@emotion/babel-plugin-jsx-pragmatic': minor
4+
'@emotion/babel-preset-css-prop': minor
5+
'@emotion/cache': minor
6+
'@emotion/css': minor
7+
'@emotion/css-prettifier': minor
8+
'@emotion/eslint-plugin': minor
9+
'@emotion/hash': minor
10+
'@emotion/is-prop-valid': minor
11+
'@emotion/jest': minor
12+
'@emotion/memoize': minor
13+
'@emotion/native': minor
14+
'@emotion/primitives': minor
15+
'@emotion/primitives-core': minor
16+
'@emotion/react': minor
17+
'@emotion/serialize': minor
18+
'@emotion/server': minor
19+
'@emotion/sheet': minor
20+
'@emotion/styled': minor
21+
'@emotion/unitless': minor
22+
'@emotion/utils': minor
23+
'@emotion/weak-memoize': minor
24+
---
25+
26+
`exports` field has been added to the `package.json` manifest. This fixes how our default exports are treated by Node.js when using their native support for ES modules. It also limits what files can be imported from a package but we've tried our best to allow importing all the files that were considered to be a part of the public API.

.changeset/wet-teachers-peel.md

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
'@emotion/react': minor
3+
'@emotion/styled': minor
4+
'@emotion/utils': minor
5+
---
6+
7+
Thanks to the added `exports` field, the package now includes a `worker` condition that can be utilized by properly configured bundlers when targeting worker-like environments. It fixes the issue with browser-specific files being prioritized by some bundlers when targeting workers.

package.json

+5-1
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,10 @@
133133
"react": "React",
134134
"react/jsx-runtime": "ReactJSX",
135135
"react/jsx-dev-runtime": "ReactJSXDev"
136+
},
137+
"exports": true,
138+
"___experimentalFlags_WILL_CHANGE_IN_PATCH": {
139+
"exports": true
136140
}
137141
},
138142
"bugs": {
@@ -183,7 +187,7 @@
183187
"@changesets/changelog-github": "^0.4.0",
184188
"@changesets/cli": "^2.16.0",
185189
"@manypkg/cli": "^0.19.1",
186-
"@preconstruct/cli": "^2.1.5",
190+
"@preconstruct/cli": "^2.2.1",
187191
"@testing-library/react": "13.0.0-alpha.5",
188192
"@types/jest": "^27.0.3",
189193
"@types/node": "^12.20.37",

packages/babel-plugin-jsx-pragmatic/package.json

+7
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@
44
"description": "Insert code to load a module corresponding to JSX pragma.",
55
"main": "dist/emotion-babel-plugin-jsx-pragmatic.cjs.js",
66
"module": "dist/emotion-babel-plugin-jsx-pragmatic.esm.js",
7+
"exports": {
8+
".": {
9+
"module": "./dist/emotion-babel-plugin-jsx-pragmatic.esm.js",
10+
"default": "./dist/emotion-babel-plugin-jsx-pragmatic.cjs.js"
11+
},
12+
"./package.json": "./package.json"
13+
},
714
"license": "MIT",
815
"repository": "https://github.com/emotion-js/emotion/tree/main/packages/babel-plugin-jsx-pragmatic",
916
"scripts": {

packages/babel-plugin/package.json

+7
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@
44
"description": "A recommended babel preprocessing plugin for emotion, The Next Generation of CSS-in-JS.",
55
"main": "dist/emotion-babel-plugin.cjs.js",
66
"module": "dist/emotion-babel-plugin.esm.js",
7+
"exports": {
8+
".": {
9+
"module": "./dist/emotion-babel-plugin.esm.js",
10+
"default": "./dist/emotion-babel-plugin.cjs.js"
11+
},
12+
"./package.json": "./package.json"
13+
},
714
"files": [
815
"src",
916
"lib",

packages/babel-preset-css-prop/package.json

+7
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@
44
"description": "A babel preset to automatically enable emotion's css prop",
55
"main": "dist/emotion-babel-preset-css-prop.cjs.js",
66
"module": "dist/emotion-babel-preset-css-prop.esm.js",
7+
"exports": {
8+
".": {
9+
"module": "./dist/emotion-babel-preset-css-prop.esm.js",
10+
"default": "./dist/emotion-babel-preset-css-prop.cjs.js"
11+
},
12+
"./package.json": "./package.json"
13+
},
714
"license": "MIT",
815
"repository": "https://github.com/emotion-js/emotion/tree/main/packages/babel-preset-css-prop",
916
"scripts": {

packages/cache/package.json

+18-2
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,18 @@
55
"main": "dist/emotion-cache.cjs.js",
66
"module": "dist/emotion-cache.esm.js",
77
"browser": {
8-
"./dist/emotion-cache.cjs.js": "./dist/emotion-cache.browser.cjs.js",
98
"./dist/emotion-cache.esm.js": "./dist/emotion-cache.browser.esm.js"
109
},
10+
"exports": {
11+
".": {
12+
"module": {
13+
"browser": "./dist/emotion-cache.browser.esm.js",
14+
"default": "./dist/emotion-cache.esm.js"
15+
},
16+
"default": "./dist/emotion-cache.cjs.js"
17+
},
18+
"./package.json": "./package.json"
19+
},
1120
"types": "types/index.d.ts",
1221
"license": "MIT",
1322
"repository": "https://github.com/emotion-js/emotion/tree/main/packages/cache",
@@ -33,5 +42,12 @@
3342
"src",
3443
"dist",
3544
"types/*.d.ts"
36-
]
45+
],
46+
"preconstruct": {
47+
"exports": {
48+
"envConditions": [
49+
"browser"
50+
]
51+
}
52+
}
3753
}

packages/cache/src/index.d.ts

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export * from '../types'
2+
export { default } from '../types'

packages/css-prettifier/package.json

+7
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,13 @@
1111
"author": "Mateusz Burzyński <mateuszburzynski@gmail.com> (https://github.com/Andarist)",
1212
"main": "dist/emotion-css-prettifier.cjs.js",
1313
"module": "dist/emotion-css-prettifier.esm.js",
14+
"exports": {
15+
".": {
16+
"module": "./dist/emotion-css-prettifier.esm.js",
17+
"default": "./dist/emotion-css-prettifier.cjs.js"
18+
},
19+
"./package.json": "./package.json"
20+
},
1421
"types": "types/index.d.ts",
1522
"license": "MIT",
1623
"repository": "https://github.com/emotion-js/emotion/tree/main/packages/css-prettifier",
+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export * from '../types'
2+
export { default } from '../types'

packages/css/package.json

+18-1
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,28 @@
5252
"url": "https://github.com/emotion-js/emotion/issues"
5353
},
5454
"umd:main": "dist/emotion-css.umd.min.js",
55+
"exports": {
56+
".": {
57+
"module": "./dist/emotion-css.esm.js",
58+
"default": "./dist/emotion-css.cjs.js"
59+
},
60+
"./create-instance": {
61+
"module": "./create-instance/dist/emotion-css-create-instance.esm.js",
62+
"default": "./create-instance/dist/emotion-css-create-instance.cjs.js"
63+
},
64+
"./package.json": "./package.json",
65+
"./macro": "./macro.js"
66+
},
5567
"preconstruct": {
5668
"umdName": "emotion",
5769
"entrypoints": [
5870
"./index.js",
5971
"./create-instance.js"
60-
]
72+
],
73+
"exports": {
74+
"extra": {
75+
"./macro": "./macro.js"
76+
}
77+
}
6178
}
6279
}

packages/css/src/create-instance.d.ts

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export * from '../types'
2+
export { default } from '../types'

packages/css/src/index.d.ts

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from '../types'

packages/eslint-plugin/package.json

+8
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,14 @@
1313
],
1414
"author": "alex-pex <alexandre.paixao@stadline.com>",
1515
"main": "dist/emotion-eslint-plugin.cjs.js",
16+
"module": "dist/emotion-eslint-plugin.esm.js",
17+
"exports": {
18+
".": {
19+
"module": "./dist/emotion-eslint-plugin.esm.js",
20+
"default": "./dist/emotion-eslint-plugin.cjs.js"
21+
},
22+
"./package.json": "./package.json"
23+
},
1624
"engines": {
1725
"node": ">=6"
1826
},

packages/hash/package.json

+6-3
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,11 @@
2222
"@definitelytyped/dtslint": "0.0.112",
2323
"typescript": "^4.5.5"
2424
},
25-
"browser": {
26-
"./dist/emotion-hash.cjs.js": "./dist/emotion-hash.browser.cjs.js",
27-
"./dist/emotion-hash.esm.js": "./dist/emotion-hash.browser.esm.js"
25+
"exports": {
26+
".": {
27+
"module": "./dist/emotion-hash.esm.js",
28+
"default": "./dist/emotion-hash.cjs.js"
29+
},
30+
"./package.json": "./package.json"
2831
}
2932
}

packages/hash/src/index.d.ts

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export * from '../types'
2+
export { default } from '../types'

packages/is-prop-valid/package.json

+6-3
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,11 @@
2525
"dist",
2626
"types/*.d.ts"
2727
],
28-
"browser": {
29-
"./dist/emotion-is-prop-valid.cjs.js": "./dist/emotion-is-prop-valid.browser.cjs.js",
30-
"./dist/emotion-is-prop-valid.esm.js": "./dist/emotion-is-prop-valid.browser.esm.js"
28+
"exports": {
29+
".": {
30+
"module": "./dist/emotion-is-prop-valid.esm.js",
31+
"default": "./dist/emotion-is-prop-valid.cjs.js"
32+
},
33+
"./package.json": "./package.json"
3134
}
3235
}

packages/is-prop-valid/src/index.d.ts

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export * from '../types'
2+
export { default } from '../types'

packages/jest/package.json

+19
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,25 @@
44
"description": "Jest utilities for emotion",
55
"main": "dist/emotion-jest.cjs.js",
66
"module": "dist/emotion-jest.esm.js",
7+
"exports": {
8+
".": {
9+
"module": "./dist/emotion-jest.esm.js",
10+
"default": "./dist/emotion-jest.cjs.js"
11+
},
12+
"./enzyme": {
13+
"module": "./enzyme/dist/emotion-jest-enzyme.esm.js",
14+
"default": "./enzyme/dist/emotion-jest-enzyme.cjs.js"
15+
},
16+
"./serializer": {
17+
"module": "./serializer/dist/emotion-jest-serializer.esm.js",
18+
"default": "./serializer/dist/emotion-jest-serializer.cjs.js"
19+
},
20+
"./enzyme-serializer": {
21+
"module": "./enzyme-serializer/dist/emotion-jest-enzyme-serializer.esm.js",
22+
"default": "./enzyme-serializer/dist/emotion-jest-enzyme-serializer.cjs.js"
23+
},
24+
"./package.json": "./package.json"
25+
},
726
"types": "types/index.d.ts",
827
"files": [
928
"src",
+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from '../types/enzyme-serializer'

packages/jest/src/enzyme.d.ts

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from '../types/enzyme'

packages/jest/src/index.d.ts

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from '../types'

packages/jest/src/serializer.d.ts

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from '../types/serializer'

packages/memoize/package.json

+6-3
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,11 @@
2222
"dist",
2323
"types/*.d.ts"
2424
],
25-
"browser": {
26-
"./dist/emotion-memoize.cjs.js": "./dist/emotion-memoize.browser.cjs.js",
27-
"./dist/emotion-memoize.esm.js": "./dist/emotion-memoize.browser.esm.js"
25+
"exports": {
26+
".": {
27+
"module": "./dist/emotion-memoize.esm.js",
28+
"default": "./dist/emotion-memoize.cjs.js"
29+
},
30+
"./package.json": "./package.json"
2831
}
2932
}

packages/memoize/src/index.d.ts

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export * from '../types'
2+
export { default } from '../types'

packages/native/package.json

+14-3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,14 @@
44
"description": "Style and render React Native components using emotion",
55
"main": "dist/emotion-native.cjs.js",
66
"module": "dist/emotion-native.esm.js",
7+
"exports": {
8+
".": {
9+
"module": "./dist/emotion-native.esm.js",
10+
"default": "./dist/emotion-native.cjs.js"
11+
},
12+
"./package.json": "./package.json",
13+
"./macro": "./macro.js"
14+
},
715
"scripts": {
816
"test:typescript": "dtslint types"
917
},
@@ -51,8 +59,11 @@
5159
"publishConfig": {
5260
"access": "public"
5361
},
54-
"browser": {
55-
"./dist/emotion-native.cjs.js": "./dist/emotion-native.browser.cjs.js",
56-
"./dist/emotion-native.esm.js": "./dist/emotion-native.browser.esm.js"
62+
"preconstruct": {
63+
"exports": {
64+
"extra": {
65+
"./macro": "./macro.js"
66+
}
67+
}
5768
}
5869
}

packages/native/src/index.d.ts

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export * from '../types'
2+
export { default } from '../types'

packages/native/tsconfig.json

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"compilerOptions": {
3+
"esModuleInterop": true,
4+
"forceConsistentCasingInFileNames": true,
5+
"isolatedModules": true,
6+
"jsx": "react",
7+
"lib": ["es6", "dom"],
8+
"module": "commonjs",
9+
"noEmit": true,
10+
"skipLibCheck": true,
11+
"skipDefaultLibCheck": true,
12+
"resolveJsonModule": true,
13+
"strict": true,
14+
"target": "es5",
15+
"types": []
16+
}
17+
}

packages/primitives-core/package.json

+17-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,23 @@
4141
"access": "public"
4242
},
4343
"browser": {
44-
"./dist/emotion-primitives-core.cjs.js": "./dist/emotion-primitives-core.browser.cjs.js",
4544
"./dist/emotion-primitives-core.esm.js": "./dist/emotion-primitives-core.browser.esm.js"
45+
},
46+
"exports": {
47+
".": {
48+
"module": {
49+
"browser": "./dist/emotion-primitives-core.browser.esm.js",
50+
"default": "./dist/emotion-primitives-core.esm.js"
51+
},
52+
"default": "./dist/emotion-primitives-core.cjs.js"
53+
},
54+
"./package.json": "./package.json"
55+
},
56+
"preconstruct": {
57+
"exports": {
58+
"envConditions": [
59+
"browser"
60+
]
61+
}
4662
}
4763
}

packages/primitives/package.json

+21-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,27 @@
5151
"access": "public"
5252
},
5353
"browser": {
54-
"./dist/emotion-primitives.cjs.js": "./dist/emotion-primitives.browser.cjs.js",
5554
"./dist/emotion-primitives.esm.js": "./dist/emotion-primitives.browser.esm.js"
55+
},
56+
"exports": {
57+
".": {
58+
"module": {
59+
"browser": "./dist/emotion-primitives.browser.esm.js",
60+
"default": "./dist/emotion-primitives.esm.js"
61+
},
62+
"default": "./dist/emotion-primitives.cjs.js"
63+
},
64+
"./package.json": "./package.json",
65+
"./macro": "./macro.js"
66+
},
67+
"preconstruct": {
68+
"exports": {
69+
"extra": {
70+
"./macro": "./macro.js"
71+
},
72+
"envConditions": [
73+
"browser"
74+
]
75+
}
5676
}
5777
}

0 commit comments

Comments
 (0)