Skip to content

Commit 40d821a

Browse files
Merge pull request #1459 from opencomponents/support-dev-importmap
add support for importmap in oc.json for oc dev
2 parents 698cc07 + b468a81 commit 40d821a

File tree

3 files changed

+19
-1
lines changed

3 files changed

+19
-1
lines changed

src/cli/domain/ocConfig.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ export interface OpenComponentsConfig {
99
registries?: string[];
1010
/** Development-specific configuration settings */
1111
development?: {
12+
/** Importmap to add to the preview HTML's <head> section. */
13+
importmap?: {
14+
imports?: Record<string, string>;
15+
};
1216
/** Additional Express routes to mount on the registry application */
1317
routes?: Array<{
1418
route: string;
@@ -48,9 +52,13 @@ export interface OpenComponentsConfig {
4852
}
4953

5054
type ParsedConfig = {
55+
$schema?: string | null;
5156
sourcePath?: string;
5257
registries: string[];
5358
development: {
59+
importmap?: {
60+
imports?: Record<string, string>;
61+
};
5462
routes?: Array<{
5563
route: string;
5664
method: string;
@@ -100,6 +108,7 @@ function parseConfig(config: OpenComponentsConfig): ParsedConfig {
100108
...config,
101109
registries: config.registries || [],
102110
development: {
111+
importmap: config.development?.importmap,
103112
preload: config.development?.preload,
104113
plugins,
105114
fallback: config.development?.fallback,
@@ -131,6 +140,10 @@ export function getOcConfig(folder?: string): ParsedConfig {
131140

132141
export function setOcConfig(config: ParsedConfig, path?: string) {
133142
const { sourcePath, ...rest } = config;
143+
if (!rest.$schema) {
144+
rest.$schema = 'https://opencomponents.github.io/schema.json';
145+
}
146+
134147
fs.writeFileSync(
135148
path || sourcePath || settings.configFile.src,
136149
JSON.stringify(rest, null, 2)

src/registry/routes/component-preview.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import type { Request, Response } from 'express';
22
import { fromPromise } from 'universalify';
3+
import { getOcConfig } from '../../cli/domain/ocConfig';
34
import type { Component, Config, TemplateInfo } from '../../types';
45
import type { Repository } from '../domain/repository';
56
import * as urlBuilder from '../domain/url-builder';
@@ -32,6 +33,7 @@ function componentPreview(
3233
res.send(
3334
previewView({
3435
component,
36+
importmap: getOcConfig(res.conf.path)?.development?.importmap,
3537
fallbackClient: res.conf.fallbackClient
3638
? `${res.conf.fallbackRegistryUrl.replace(/\/$/, '')}/oc-client/client.dev.js`
3739
: undefined,

src/registry/views/preview.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,14 @@ export default function preview(vm: {
77
qs: string;
88
liveReload: string;
99
templates: TemplateInfo[];
10+
importmap?: {
11+
imports?: Record<string, string>;
12+
};
1013
preload?: string;
1114
}): string {
1215
const baseUrl = vm.href.replace('http://', '//').replace('https://', '//');
1316
const { name, version } = vm.component;
14-
const imports = vm.component.oc.files.imports;
17+
const imports = vm.importmap?.imports || vm.component.oc.files.imports;
1518
const componentHref = `${baseUrl}${name}/${version}/${vm.qs}`;
1619
const clientHref = vm.fallbackClient || `${baseUrl}oc-client/client.js`;
1720
const id = `oc-${name}@${version}`;

0 commit comments

Comments
 (0)