Reputation: 16845
I have a Node project:
ts-loader
+-proj/
+-src/
|-file1.ts
|-file2.ts
|-file3.ts
|-...
|-package.json
|-webpack.config.json
|-tsconfig.json
This project is supposed to be a library. I need to build a bundle that in the end can be consumed by other Typescript projects targeting Node.
Any code consuming that final bundle will need to access only some classes I defined inside file1.ts
and file2.ts
. All other source files export stuff, but those are eventually referenced by those two files and I want the final library to expose only the components defined inside these two files.
// file1.ts
export class MyComponent1 {...}
export function myFunc() {...}
// file2.ts
import { MyComponent3 } from "./file3"
export class MyComponent2 {...}
export function myOtherFunc() {...}
// file3.ts
export class MyComponent3 {...}
Given the files above, the final bundle should expose MyComponent2
, MyComponent2
, myFunc
and myOtherFunc
.
My problem is that I do not how to configure Webpack. It needs an entry point, but I need to expose many different things under src
, how to do that?
Upvotes: 0
Views: 186
Reputation: 28959
Create a single file that would serve as the entry point. For example, it can be named main.ts or index.ts or anything you prefer.
The contents of the file would just re-exporting the contents of the files you want to be public:
export * from "./file1";
export * from "./file2";
If you want to export only some thing and not all from each file. Assuming file1 exports a
, b
, and c
while file2 exports d
, e
, and f
you can specify a subset like this:
export { a, b } from "./file1";
export { e, f } from "./file2";
Then you can configure Webpack to use your file in webpack.conf.js:
module.exports = {
entry: "./src/main.ts", //or your choice of name
/* ... */
}
Upvotes: 1