Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 21 additions & 5 deletions packages/react/tasks/build.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,16 @@ const packageJSON = JSON.parse(
readFileSync(path.resolve(__dirname, '../package.json'))
);

// Read component-level package.json if it exists
let componentPackageJSON = {};
try {
componentPackageJSON = JSON.parse(
readFileSync(path.resolve(process.cwd(), 'package.json'))
);
} catch (e) {
// No component package.json, use empty object
}

/**
* build function
*/
Expand Down Expand Up @@ -131,15 +141,21 @@ function getTsCompilerOptions() {
* @returns
*/
function getRollupConfig(input, rootDir, outDir) {
// Merge dependencies from both main package.json and component package.json
const allDependencies = {
...packageJSON.peerDependencies,
...packageJSON.dependencies,
...packageJSON.devDependencies,
...componentPackageJSON.peerDependencies,
...componentPackageJSON.dependencies,
...componentPackageJSON.devDependencies,
};

return {
input,
// Mark dependencies listed in `package.json` as external so that they are
// not included in the output bundle.
external: [
...Object.keys(packageJSON.peerDependencies),
...Object.keys(packageJSON.dependencies),
...Object.keys(packageJSON.devDependencies),
].map((name) => {
external: Object.keys(allDependencies).map((name) => {
// Transform the name of each dependency into a regex so that imports from
// nested paths are correctly marked as external.
//
Expand Down
20 changes: 16 additions & 4 deletions packages/utilities/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,19 +13,31 @@
"url": "https://github.com/carbon-design-system/carbon-labs",
"directory": "packages/utilities"
},
"main": "./es/index.js",
"module": "./es/index.js",
"types": "./es/index.d.ts",
"sideEffects": false,
"exports": {
".": {
"default": "./src/index.js"
"types": "./es/index.d.ts",
"import": "./es/index.js",
"default": "./es/index.js"
},
"./es/": "./es/"
"./es/*": {
"types": "./es/*.d.ts",
"import": "./es/*",
"default": "./es/*"
}
},
"scripts": {
"build": "yarn clean && babel src --quiet -d es",
"build": "bash scripts/build.sh",
"clean": "rimraf es"
},
"files": [
"es/**/*.js",
"es/index.js"
"es/**/*.d.ts",
"es/index.js",
"es/index.d.ts"
],
"dependencies": {
"react": "^18.3.1",
Expand Down
16 changes: 16 additions & 0 deletions packages/utilities/scripts/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/bin/bash

# Clean previous build
yarn clean

# Transpile JavaScript with Babel
babel src --quiet -d es

# Copy TypeScript declaration files
find src -name "*.d.ts" -type f | while read file; do
dest="es/${file#src/}"
mkdir -p "$(dirname "$dest")"
cp "$file" "$dest"
done

# Made with Bob
13 changes: 13 additions & 0 deletions packages/utilities/src/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
/**
* @license
*
* Copyright IBM Corp. 2024
*
* This source code is licensed under the Apache-2.0 license found in the
* LICENSE file in the root directory of this source tree.
*/

export * from './settings/index.js';
export * from './usePrefix.js';

// Made with Bob
12 changes: 12 additions & 0 deletions packages/utilities/src/settings/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
/**
* @license
*
* Copyright IBM Corp. 2024
*
* This source code is licensed under the Apache-2.0 license found in the
* LICENSE file in the root directory of this source tree.
*/

export { default as settings } from './settings.js';

// Made with Bob
28 changes: 28 additions & 0 deletions packages/utilities/src/settings/settings.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/**
* @license
*
* Copyright IBM Corp. 2024
*
* This source code is licensed under the Apache-2.0 license found in the
* LICENSE file in the root directory of this source tree.
*/

interface Settings {
/**
* Stable prefix for Carbon Labs components
* @default 'clabs'
*/
stablePrefix: string;

/**
* Core Carbon prefix
* @default 'cds'
*/
prefix: string;
}

declare const settings: Settings;

export default settings;

// Made with Bob
18 changes: 18 additions & 0 deletions packages/utilities/src/usePrefix.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/**
* Copyright IBM Corp. 2024
*
* This source code is licensed under the Apache-2.0 license found in the
* LICENSE file in the root directory of this source tree.
*/

import React from 'react';

export const PrefixContext: React.Context<string>;

/**
* Sets the prefix context
* @returns context value
*/
export function usePrefix(): string;

// Made with Bob