chore(packages): add dev builds (#452)

This commit is contained in:
rahim
2026-02-04 20:05:38 +11:00
committed by GitHub
parent 62c99fe001
commit 01c3f891cf
24 changed files with 129 additions and 49 deletions
+5 -2
View File
@@ -172,13 +172,16 @@ When generating or editing code in this repository, follow these rules to ensure
- Maintain accessibility: ARIA roles, keyboard interactions, focus management.
- Use dataattributes and CSS variables for style hooks—no inline animation JS.
- Ensure logic runs at 60 FPS; prefer CSS transitions over manual DOM mutations.
6. **DevOnly Diagnostics**
- Use `__DEV__` for warnings, debug helpers, and displayName assignments.
- Keep production builds free of devonly logging and checks.
6. **Commit Scope**
7. **Commit Scope**
- Use semantic commit messages (enforced by `commitlint`).
- One focused change per commit—no mixed updates.
- Breaking changes use `!`.
7. **Keep AI Documentation Current** — When introducing new patterns, ask the user to run `/claude-update` for guidance.
8. **Keep AI Documentation Current** — When introducing new patterns, ask the user to run `/claude-update` for guidance.
## Code Rules
+9 -7
View File
@@ -12,17 +12,19 @@
],
"exports": {
".": {
"types": "./dist/index.d.ts",
"default": "./dist/index.js"
"types": "./dist/dev/index.d.ts",
"development": "./dist/dev/index.js",
"default": "./dist/default/index.js"
},
"./dom": {
"types": "./dist/dom.d.ts",
"default": "./dist/dom.js"
"types": "./dist/dev/dom.d.ts",
"development": "./dist/dev/dom.js",
"default": "./dist/default/dom.js"
}
},
"main": "dist/index.js",
"module": "dist/index.js",
"types": "dist/index.d.ts",
"main": "dist/default/index.js",
"module": "dist/default/index.js",
"types": "dist/dev/index.d.ts",
"files": [
"dist"
],
+1
View File
@@ -0,0 +1 @@
declare const __DEV__: boolean;
+1
View File
@@ -1,6 +1,7 @@
const warned = new Set<string>();
export function logMissingFeature(displayName: string, featureName: string): void {
if (!__DEV__) return;
const key = `${displayName}:${featureName}`;
if (warned.has(key)) return;
+1
View File
@@ -0,0 +1 @@
declare const __DEV__: boolean;
+13 -2
View File
@@ -1,6 +1,11 @@
import type { Options } from 'tsdown';
import { defineConfig } from 'tsdown';
export default defineConfig({
type BuildMode = 'dev' | 'default';
const buildModes: BuildMode[] = ['dev', 'default'];
const createConfig = (mode: BuildMode): Options => ({
entry: {
index: './src/core/index.ts',
dom: './src/dom/index.ts',
@@ -12,5 +17,11 @@ export default defineConfig({
alias: {
'@': new URL('./src/core', import.meta.url).pathname,
},
dts: true,
outDir: `dist/${mode}`,
define: {
__DEV__: mode === 'dev' ? 'true' : 'false',
},
dts: mode === 'dev',
});
export default defineConfig(buildModes.map((mode) => createConfig(mode)));
+3
View File
@@ -1,6 +1,9 @@
import { defineConfig } from 'vitest/config';
export default defineConfig({
define: {
__DEV__: 'true',
},
test: {
projects: [
{
+22 -16
View File
@@ -14,36 +14,42 @@
],
"exports": {
".": {
"types": "./dist/index.d.ts",
"default": "./dist/index.js"
"types": "./dist/dev/index.d.ts",
"development": "./dist/dev/index.js",
"default": "./dist/default/index.js"
},
"./player/*": {
"types": "./dist/define/player/*.d.ts",
"default": "./dist/define/player/*.js"
"types": "./dist/dev/define/player/*.d.ts",
"development": "./dist/dev/define/player/*.js",
"default": "./dist/default/define/player/*.js"
},
"./ui/*": {
"types": "./dist/define/ui/*.d.ts",
"default": "./dist/define/ui/*.js"
"types": "./dist/dev/define/ui/*.d.ts",
"development": "./dist/dev/define/ui/*.js",
"default": "./dist/default/define/ui/*.js"
},
"./skin/*": {
"types": "./dist/define/skin/*.d.ts",
"default": "./dist/define/skin/*.js"
"types": "./dist/dev/define/skin/*.d.ts",
"development": "./dist/dev/define/skin/*.js",
"default": "./dist/default/define/skin/*.js"
},
"./feature/*": {
"types": "./dist/define/feature/*.d.ts",
"default": "./dist/define/feature/*.js"
"types": "./dist/dev/define/feature/*.d.ts",
"development": "./dist/dev/define/feature/*.js",
"default": "./dist/default/define/feature/*.js"
},
"./media/*": {
"types": "./dist/define/media/*.d.ts",
"default": "./dist/define/media/*.js"
"types": "./dist/dev/define/media/*.d.ts",
"development": "./dist/dev/define/media/*.js",
"default": "./dist/default/define/media/*.js"
}
},
"sideEffects": [
"./dist/define/**/*.js"
"./dist/*/define/**/*.js"
],
"main": "dist/index.js",
"module": "dist/index.js",
"types": "dist/index.d.ts",
"main": "dist/default/index.js",
"module": "dist/default/index.js",
"types": "dist/dev/index.d.ts",
"files": [
"dist"
],
+1
View File
@@ -0,0 +1 @@
declare const __DEV__: boolean;
+13 -2
View File
@@ -1,6 +1,11 @@
import { globSync } from 'node:fs';
import type { Options } from 'tsdown';
import { defineConfig } from 'tsdown';
type BuildMode = 'dev' | 'default';
const buildModes: BuildMode[] = ['dev', 'default'];
const defineEntries = Object.fromEntries(
globSync('src/define/**/*.ts').map((file) => {
const key = file.replace('src/', '').replace('.ts', '');
@@ -8,7 +13,7 @@ const defineEntries = Object.fromEntries(
})
);
export default defineConfig({
const createConfig = (mode: BuildMode): Options => ({
entry: {
index: 'src/index.ts',
...defineEntries,
@@ -20,5 +25,11 @@ export default defineConfig({
alias: {
'@': new URL('./src', import.meta.url).pathname,
},
dts: true,
outDir: `dist/${mode}`,
define: {
__DEV__: mode === 'dev' ? 'true' : 'false',
},
dts: mode === 'dev',
});
export default defineConfig(buildModes.map((mode) => createConfig(mode)));
+3
View File
@@ -1,6 +1,9 @@
import { defineConfig } from 'vitest/config';
export default defineConfig({
define: {
__DEV__: 'true',
},
test: {
passWithNoTests: true,
onConsoleLog: (log) => !log.includes('Lit is in dev mode'),
+6 -5
View File
@@ -14,13 +14,14 @@
],
"exports": {
".": {
"types": "./dist/index.d.ts",
"default": "./dist/index.js"
"types": "./dist/dev/index.d.ts",
"development": "./dist/dev/index.js",
"default": "./dist/default/index.js"
}
},
"main": "dist/index.js",
"module": "dist/index.js",
"types": "dist/index.d.ts",
"main": "dist/default/index.js",
"module": "dist/default/index.js",
"types": "dist/dev/index.d.ts",
"files": [
"dist"
],
+1
View File
@@ -0,0 +1 @@
declare const __DEV__: boolean;
+1 -1
View File
@@ -45,7 +45,7 @@ export function createPlayer<const Features extends AnyPlayerFeature[]>(
return <PlayerContextProvider value={{ store, media, setMedia }}>{children}</PlayerContextProvider>;
}
if (config.displayName) {
if (__DEV__ && config.displayName) {
Provider.displayName = `${config.displayName}.Provider`;
}
+1 -1
View File
@@ -39,7 +39,7 @@ export function useButton(params: UseButtonParameters): UseButtonReturnValue {
const buttonRef = useCallback(
(element: HTMLElement | null) => {
if (element && element.tagName !== 'BUTTON') {
if (__DEV__ && element && element.tagName !== 'BUTTON') {
console.warn(`${displayName} should render a <button> element for accessibility`);
}
},
+13 -2
View File
@@ -1,6 +1,11 @@
import type { Options } from 'tsdown';
import { defineConfig } from 'tsdown';
export default defineConfig({
type BuildMode = 'dev' | 'default';
const buildModes: BuildMode[] = ['dev', 'default'];
const createConfig = (mode: BuildMode): Options => ({
entry: {
index: './src/index.ts',
},
@@ -11,5 +16,11 @@ export default defineConfig({
alias: {
'@': new URL('./src', import.meta.url).pathname,
},
dts: true,
outDir: `dist/${mode}`,
define: {
__DEV__: mode === 'dev' ? 'true' : 'false',
},
dts: mode === 'dev',
});
export default defineConfig(buildModes.map((mode) => createConfig(mode)));
+3
View File
@@ -1,6 +1,9 @@
import { defineConfig } from 'vitest/config';
export default defineConfig({
define: {
__DEV__: 'true',
},
test: {
environment: 'jsdom',
include: ['src/**/*.test.{ts,tsx}'],
+12 -9
View File
@@ -13,21 +13,24 @@
],
"exports": {
".": {
"types": "./dist/index.d.ts",
"default": "./dist/index.js"
"types": "./dist/dev/index.d.ts",
"development": "./dist/dev/index.js",
"default": "./dist/default/index.js"
},
"./lit": {
"types": "./dist/lit.d.ts",
"default": "./dist/lit.js"
"types": "./dist/dev/lit.d.ts",
"development": "./dist/dev/lit.js",
"default": "./dist/default/lit.js"
},
"./react": {
"types": "./dist/react.d.ts",
"default": "./dist/react.js"
"types": "./dist/dev/react.d.ts",
"development": "./dist/dev/react.js",
"default": "./dist/default/react.js"
}
},
"main": "dist/index.js",
"module": "dist/index.js",
"types": "dist/index.d.ts",
"main": "dist/default/index.js",
"module": "dist/default/index.js",
"types": "dist/dev/index.d.ts",
"files": [
"dist"
],
+1
View File
@@ -0,0 +1 @@
declare const __DEV__: boolean;
+1
View File
@@ -0,0 +1 @@
declare const __DEV__: boolean;
+1
View File
@@ -0,0 +1 @@
declare const __DEV__: boolean;
+13 -2
View File
@@ -1,6 +1,11 @@
import type { Options } from 'tsdown';
import { defineConfig } from 'tsdown';
export default defineConfig({
type BuildMode = 'dev' | 'default';
const buildModes: BuildMode[] = ['dev', 'default'];
const createConfig = (mode: BuildMode): Options => ({
entry: {
index: './src/core/index.ts',
lit: './src/lit/index.ts',
@@ -13,5 +18,11 @@ export default defineConfig({
alias: {
'@': new URL('./src/core', import.meta.url).pathname,
},
dts: true,
outDir: `dist/${mode}`,
define: {
__DEV__: mode === 'dev' ? 'true' : 'false',
},
dts: mode === 'dev',
});
export default defineConfig(buildModes.map((mode) => createConfig(mode)));
+3
View File
@@ -1,6 +1,9 @@
import { defineConfig } from 'vitest/config';
export default defineConfig({
define: {
__DEV__: 'true',
},
test: {
onConsoleLog: (log) => !log.includes('Lit is in dev mode'),
projects: [
+1
View File
@@ -0,0 +1 @@
declare const __DEV__: boolean;