Skip to content

Commit e23d965

Browse files
feat: only publish esm bundles from @primer/react (#6425)
Co-authored-by: Marie Lucca <40550942+francinelucca@users.noreply.github.com>
1 parent 37ce4aa commit e23d965

File tree

14 files changed

+37
-152
lines changed

14 files changed

+37
-152
lines changed

.changeset/slick-months-cry.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@primer/react': major
3+
---
4+
5+
Update @primer/react to only export ESM bundles

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,4 +176,4 @@ jobs:
176176
- name: Build
177177
run: npm run build
178178
- name: Get export sizes
179-
run: node packages/react/script/get-export-sizes.js
179+
run: node packages/react/script/get-export-sizes.cjs

.github/workflows/size.yml

Lines changed: 0 additions & 13 deletions
This file was deleted.

package-lock.json

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
File renamed without changes.

packages/react/babel.config.js renamed to packages/react/babel.config.cjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const defines = require('./babel-defines')
1+
const defines = require('./babel-defines.cjs')
22
const {isSupported} = require('./script/react-compiler.mjs')
33

44
function replacementPlugin(env) {

packages/react/package.json

Lines changed: 19 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,43 @@
11
{
22
"name": "@primer/react",
3+
"type": "module",
34
"version": "38.0.0-rc.2",
45
"description": "An implementation of GitHub's Primer Design System using React",
5-
"main": "lib/index.js",
6-
"module": "lib-esm/index.js",
6+
"main": "./dist/index.js",
7+
"module": "./dist/index.js",
78
"exports": {
89
".": {
9-
"import": "./lib-esm/index.js",
10-
"require": "./lib/index.js"
10+
"types": "./dist/index.d.ts",
11+
"default": "./dist/index.js"
1112
},
1213
"./experimental": {
13-
"import": "./lib-esm/experimental/index.js",
14-
"require": "./lib/experimental/index.js"
14+
"types": "./dist/experimental/index.d.ts",
15+
"default": "./dist/experimental/index.js"
1516
},
1617
"./deprecated": {
17-
"import": "./lib-esm/deprecated/index.js",
18-
"require": "./lib/deprecated/index.js"
18+
"types": "./dist/deprecated/index.d.ts",
19+
"default": "./dist/deprecated/index.js"
1920
},
2021
"./next": {
21-
"import": "./lib-esm/next/index.js",
22-
"require": "./lib/next/index.js"
22+
"types": "./dist/next/index.d.ts",
23+
"default": "./dist/next/index.js"
2324
},
2425
"./test-helpers": {
25-
"import": "./lib-esm/test-helpers.js",
26-
"require": "./lib/test-helpers.js"
26+
"types": "./dist/utils/test-helpers.d.ts",
27+
"default": "./dist/test-helpers.js"
2728
},
2829
"./generated/components.json": "./generated/components.json",
2930
"./generated/hooks.json": "./generated/hooks.json"
3031
},
31-
"typings": "lib/index.d.ts",
32+
"typings": "dist/index.d.ts",
3233
"sideEffects": [
33-
"lib-esm/**/*.css",
34-
"lib/**/*.css",
34+
"dist/**/*.css",
3535
"src/**/test-helpers.tsx",
36-
"lib-esm/**/test-helpers.js",
37-
"lib/**/test-helpers.js"
36+
"dist/**/test-helpers.js"
3837
],
3938
"scripts": {
4039
"build": "./script/build",
41-
"clean": "rimraf dist lib lib-esm css",
40+
"clean": "rimraf dist generated",
4241
"start": "concurrently npm:start:*",
4342
"start:storybook": "STORYBOOK=true storybook dev -p 6006",
4443
"build:storybook": "storybook build",
@@ -47,6 +46,7 @@
4746
"build:components.json": "tsx script/components-json/build.ts",
4847
"build:hooks.json": "tsx script/hooks-json/build.ts",
4948
"build:precompile-color-schemes": "tsx script/precompile-color-schemes.ts",
49+
"lint:npm": "publint --types",
5050
"storybook": "storybook",
5151
"type-check": "tsc --noEmit",
5252
"type-css-modules": "tcm -p src/**/*.module.css"
@@ -59,19 +59,7 @@
5959
"design-system"
6060
],
6161
"files": [
62-
"codemods",
6362
"dist",
64-
"lib",
65-
"lib/node_modules",
66-
"lib-esm",
67-
"css",
68-
"index.d.ts",
69-
"deprecated/package.json",
70-
"experimental/package.json",
71-
"!lib/__tests__",
72-
"!lib/stories",
73-
"!lib-esm/__tests__",
74-
"!lib-esm/stories",
7563
"generated",
7664
"CHANGELOG.md"
7765
],
@@ -182,6 +170,7 @@
182170
"micromark-extension-frontmatter": "2.0.0",
183171
"micromark-extension-mdxjs": "3.0.0",
184172
"postcss-preset-primer": "^0.0.0",
173+
"publint": "^0.3.12",
185174
"react": "18.3.1",
186175
"react-dom": "18.3.1",
187176
"react-is": "18.3.1",

packages/react/rollup.config.mjs

Lines changed: 1 addition & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,6 @@ function getEntrypointsFromInput(input) {
3737
}
3838

3939
const extensions = ['.js', '.jsx', '.ts', '.tsx']
40-
const ESM_ONLY = new Set([
41-
'@github/combobox-nav',
42-
'@github/markdown-toolbar-element',
43-
'@github/paste-markdown',
44-
'@github/relative-time-element',
45-
'@github/tab-container-element',
46-
'@lit-labs/react',
47-
'@oddbird/popover-polyfill',
48-
])
4940
const dependencies = [
5041
...Object.keys(packageJson.peerDependencies ?? {}),
5142
...Object.keys(packageJson.dependencies ?? {}),
@@ -230,97 +221,10 @@ export default [
230221
external: dependencies.map(createPackageRegex),
231222
output: {
232223
interop: 'auto',
233-
dir: 'lib-esm',
224+
dir: 'dist',
234225
format: 'esm',
235226
preserveModules: true,
236227
preserveModulesRoot: 'src',
237228
},
238229
},
239-
240-
// CommonJS
241-
{
242-
...baseConfig,
243-
external: dependencies.filter(name => !ESM_ONLY.has(name)).map(createPackageRegex),
244-
output: {
245-
interop: 'auto',
246-
dir: 'lib',
247-
format: 'commonjs',
248-
preserveModules: true,
249-
preserveModulesRoot: 'src',
250-
exports: 'auto',
251-
},
252-
},
253-
254-
// Bundles
255-
{
256-
...baseConfig,
257-
input: 'src/index.ts',
258-
external: ['styled-components', 'react', 'react-dom'],
259-
plugins: [
260-
replace({
261-
'process.env.NODE_ENV': JSON.stringify('production'),
262-
preventAssignment: true,
263-
}),
264-
babel({
265-
extensions,
266-
exclude: /node_modules/,
267-
babelHelpers: 'inline',
268-
babelrc: false,
269-
configFile: false,
270-
presets: [
271-
'@babel/preset-typescript',
272-
[
273-
'@babel/preset-react',
274-
{
275-
modules: false,
276-
},
277-
],
278-
],
279-
plugins: [
280-
'macros',
281-
'add-react-displayname',
282-
'dev-expression',
283-
'babel-plugin-styled-components',
284-
'@babel/plugin-proposal-nullish-coalescing-operator',
285-
'@babel/plugin-proposal-optional-chaining',
286-
[
287-
'babel-plugin-transform-replace-expressions',
288-
{
289-
replace: {
290-
__DEV__: "process.env.NODE_ENV !== 'production'",
291-
},
292-
},
293-
],
294-
],
295-
}),
296-
resolve({
297-
extensions,
298-
}),
299-
commonjs({
300-
extensions,
301-
}),
302-
// PostCSS plugins are defined in postcss.config.js
303-
postcss({
304-
extract: 'components.css',
305-
autoModules: false,
306-
modules: {
307-
generateScopedName: 'prc_[local]_[hash:base64:5]',
308-
},
309-
}),
310-
terser(),
311-
visualizer({sourcemap: true}),
312-
],
313-
output: ['esm', 'umd'].map(format => ({
314-
interop: 'auto',
315-
file: `dist/browser.${format}.js`,
316-
format,
317-
sourcemap: true,
318-
name: 'primer',
319-
globals: {
320-
react: 'React',
321-
'react-dom': 'ReactDOM',
322-
'styled-components': 'styled',
323-
},
324-
})),
325-
},
326230
]

packages/react/script/build

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,6 @@ npx rollup -c
1717
# Type check
1818
npx tsc --project tsconfig.build.json
1919

20-
# Copy type declarations
21-
npx copyfiles -u 1 "./lib/**/*.d.ts" ./lib-esm
22-
23-
# Copy css
24-
npx copyfiles --flat ./lib/components.css ./css
25-
2620
# Build components.json file for documentation
2721
npm run build:components.json
2822

packages/react/script/components-json/build.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
import generate from '@babel/generator'
1+
// @ts-expect-error there seems to be a mismatch in the types for this package
2+
import {generate} from '@babel/generator'
23
import {parse} from '@babel/parser'
3-
import traverse from '@babel/traverse'
4+
import {traverse} from '@babel/core'
45
import type {ArrowFunctionExpression, Identifier, FunctionDeclaration} from '@babel/types'
56
import path from 'node:path'
67
import {parseArgs} from 'node:util'

0 commit comments

Comments
 (0)