Skip to content

Commit d6f761b

Browse files
committed
build: attempt to provide both ESM and CJS builds
1 parent a742e3b commit d6f761b

File tree

9 files changed

+61
-19
lines changed

9 files changed

+61
-19
lines changed

packages/electron-chrome-web-store/esbuild.config.js

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,45 @@ const { createConfig, build } = require('../../build/esbuild/esbuild.config.base
33

44
console.log(`building ${packageJson.name}`)
55

6+
const external = [
7+
'node:crypto',
8+
'node:fs',
9+
'node:os',
10+
'node:path',
11+
'node:stream',
12+
'node:stream/promises',
13+
'electron',
14+
'debug',
15+
'adm-zip',
16+
'pbf',
17+
]
18+
19+
const esmOnlyModules = ['pbf']
20+
621
const browserConfig = createConfig({
722
entryPoints: ['src/browser/index.ts'],
8-
outfile: 'dist/browser/index.js',
23+
outfile: 'dist/cjs/browser/index.js',
924
platform: 'node',
10-
external: ['electron'],
25+
external: external.filter((module) => !esmOnlyModules.includes(module)),
26+
})
27+
28+
const browserESMConfig = createConfig({
29+
entryPoints: ['src/browser/index.ts'],
30+
outfile: 'dist/esm/browser/index.mjs',
31+
platform: 'neutral',
32+
external,
33+
format: 'esm',
1134
})
1235

1336
build(browserConfig)
37+
build(browserESMConfig)
1438

1539
const preloadConfig = createConfig({
1640
entryPoints: ['src/renderer/web-store-preload.ts'],
1741
outfile: 'dist/renderer/web-store-preload.js',
1842
platform: 'browser',
19-
external: ['electron'],
43+
external,
44+
sourcemap: false,
2045
})
2146

2247
build(preloadConfig)

packages/electron-chrome-web-store/package.json

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,16 @@
22
"name": "electron-chrome-web-store",
33
"version": "0.6.1",
44
"description": "Install and update Chrome extensions from the Chrome Web Store for Electron",
5-
"main": "dist/browser/index.js",
5+
"main": "./dist/cjs/browser/index.js",
6+
"module": "./dist/esm/browser/index.mjs",
7+
"exports": {
8+
".": {
9+
"import": "./dist/esm/browser/index.mjs",
10+
"require": "./dist/cjs/browser/index.js",
11+
"types": "./dist/types/browser/index.d.ts"
12+
}
13+
},
14+
"types": "./dist/types/browser/index.d.ts",
615
"scripts": {
716
"build": "yarn clean && tsc && node esbuild.config.js",
817
"clean": "node ../../scripts/clean.js",

packages/electron-chrome-web-store/src/browser/api.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import * as fs from 'fs'
2-
import * as path from 'path'
1+
import * as fs from 'node:fs'
2+
import * as path from 'node:path'
3+
import debug from 'debug'
34
import { app, ipcMain } from 'electron'
45

56
import {
@@ -10,7 +11,7 @@ import {
1011
} from '../common/constants'
1112
import { installExtension } from './installer'
1213

13-
const d = require('debug')('electron-chrome-web-store:api')
14+
const d = debug('electron-chrome-web-store:api')
1415

1516
const WEBSTORE_URL = 'https://chromewebstore.google.com'
1617

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
declare module 'adm-zip'
2+
declare module 'debug'

packages/electron-chrome-web-store/src/browser/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { app, session as electronSession } from 'electron'
2-
import * as path from 'path'
2+
import * as path from 'node:path'
33

44
import { registerWebStoreApi } from './api'
55
import { loadAllExtensions } from './loader'

packages/electron-chrome-web-store/src/browser/installer.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
1-
import * as fs from 'fs'
2-
import * as os from 'os'
3-
import * as path from 'path'
4-
import { Readable } from 'stream'
5-
import { pipeline } from 'stream/promises'
1+
import * as fs from 'node:fs'
2+
import * as os from 'node:os'
3+
import * as path from 'node:path'
4+
import { Readable } from 'node:stream'
5+
import { pipeline } from 'node:stream/promises'
66
import { session as electronSession } from 'electron'
77

8+
import AdmZip from 'adm-zip'
9+
import debug from 'debug'
810
import Pbf from 'pbf'
911

1012
import { readCrxFileHeader, readSignedData } from './crx3'
1113
import { convertHexadecimalToIDAlphabet, generateId } from './id'
1214
import { fetch, getChromeVersion, getDefaultExtensionsPath } from './utils'
1315
import { findExtensionInstall } from './loader'
1416

15-
const AdmZip = require('adm-zip')
16-
const d = require('debug')('electron-chrome-web-store:installer')
17+
const d = debug('electron-chrome-web-store:installer')
1718

1819
function getExtensionCrxURL(extensionId: ExtensionId) {
1920
const url = new URL('https://clients2.google.com/service/update2/crx')

packages/electron-chrome-web-store/src/browser/loader.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import * as fs from 'node:fs'
22
import * as path from 'node:path'
3+
import debug from 'debug'
34

45
import { generateId } from './id'
56
import { compareVersions } from './utils'
67

7-
const d = require('debug')('electron-chrome-web-store:loader')
8+
const d = debug('electron-chrome-web-store:loader')
89

910
type ExtensionPathBaseInfo = { manifest: chrome.runtime.Manifest; path: string }
1011
type ExtensionPathInfo =

packages/electron-chrome-web-store/src/browser/updater.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import * as fs from 'node:fs'
22
import * as path from 'node:path'
3+
import debug from 'debug'
34
import { app, powerMonitor, session as electronSession } from 'electron'
45

56
import { compareVersions, fetch, getChromeVersion } from './utils'
67
import { downloadExtensionFromURL } from './installer'
78

8-
const d = require('debug')('electron-chrome-web-store:updater')
9+
const d = debug('electron-chrome-web-store:updater')
910

1011
interface OmahaResponseBody {
1112
response: {
@@ -271,7 +272,9 @@ async function installUpdates(session: Electron.Session, updates: ExtensionUpdat
271272
/**
272273
* Check session's loaded extensions for updates and install any if available.
273274
*/
274-
export async function updateExtensions(session: Electron.Session = electronSession.defaultSession): Promise<void> {
275+
export async function updateExtensions(
276+
session: Electron.Session = electronSession.defaultSession,
277+
): Promise<void> {
275278
const updates = await checkForUpdates(session)
276279
if (updates.length > 0) {
277280
await installUpdates(session, updates)

packages/electron-chrome-web-store/tsconfig.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
"compilerOptions": {
55
"moduleResolution": "node",
6-
"outDir": "dist",
6+
"outDir": "dist/types",
77
"declaration": true,
88
"emitDeclarationOnly": true
99
},

0 commit comments

Comments
 (0)