diff --git a/packages/js/package.json b/packages/js/package.json index ea8e5f1aa..9ad3ba2a6 100644 --- a/packages/js/package.json +++ b/packages/js/package.json @@ -17,12 +17,27 @@ "exports": { ".": { "types": "./dist/index.d.ts", - "import": "./dist/storyblok-js.mjs", - "require": "./dist/storyblok-js.js" + "import": "./dist/index.mjs", + "require": "./dist/index.js" + }, + "./api": { + "types": "./dist/api.d.ts", + "import": "./dist/api.mjs", + "require": "./dist/api.js" + }, + "./bridge": { + "types": "./dist/bridge.d.ts", + "import": "./dist/bridge.mjs", + "require": "./dist/bridge.js" + }, + "./editable": { + "types": "./dist/editable.d.ts", + "import": "./dist/editable.mjs", + "require": "./dist/editable.js" } }, - "main": "./dist/storyblok-js.js", - "module": "./dist/storyblok-js.mjs", + "main": "./dist/index.js", + "module": "./dist/index.mjs", "types": "./dist/index.d.ts", "files": [ "dist" diff --git a/packages/js/vite.config.ts b/packages/js/vite.config.ts index a82d58e1b..af64ec8ea 100644 --- a/packages/js/vite.config.ts +++ b/packages/js/vite.config.ts @@ -1,5 +1,5 @@ import { defineConfig, type Plugin } from 'vitest/config'; -import path from 'node:path'; +import { resolve } from 'node:path'; import { lightGreen } from 'kolorist'; import banner from 'vite-plugin-banner'; import dts from 'vite-plugin-dts'; @@ -13,6 +13,7 @@ export default defineConfig({ plugins: [ dts({ insertTypesEntry: true, + rollupTypes: true, }), banner({ content: `/**\n * name: ${pkg.name}\n * (c) ${new Date().getFullYear()}\n * description: ${pkg.description}\n * author: ${pkg.author}\n */`, @@ -20,11 +21,26 @@ export default defineConfig({ ] as Plugin[], build: { lib: { - entry: path.resolve(__dirname, 'src', 'index.ts'), + entry: { + index: resolve(__dirname, 'src/index.ts'), + api: resolve(__dirname, 'src/api.ts'), + bridge: resolve(__dirname, 'src/bridge.ts'), + editable: resolve(__dirname, 'src/editable.ts'), + }, name: 'storyblok', - fileName: (format) => { - const name = 'storyblok-js'; - return format === 'es' ? `${name}.mjs` : `${name}.js`; + fileName: (format, entry) => { + return format === 'es' ? `${entry}.mjs` : `${entry}.js`; + }, + formats: ['es', 'cjs'], + }, + rollupOptions: { + external: ['@storyblok/richtext', 'storyblok-js-client'], + output: { + preserveModules: true, + globals: { + '@storyblok/richtext': 'StoryblokRichtext', + 'storyblok-js-client': 'StoryblokClient', + }, }, }, },