| var path = require("path"); |
| var webpack = require("webpack"); |
| var UglifyJsPlugin = require("uglifyjs-webpack-plugin"); |
| |
| var PATHS = { |
| entryPoint: path.resolve(__dirname, './src/index.ts'), |
| bundles: path.resolve(__dirname, 'dist'), |
| }; |
| |
| var config = { |
| // These are the entry point of our library. We tell webpack to use |
| // the name we assign later, when creating the bundle. We also use |
| // the name to filter the second entry point for applying code |
| // minification via UglifyJS |
| entry: { |
| 'sdc-pubsub': PATHS.entryPoint, |
| 'sdc-pubsub.min': PATHS.entryPoint |
| }, |
| // The output defines how and where we want the bundles. The special |
| // value `[name]` in `filename` tell Webpack to use the name we defined above. |
| // We target a UMD and name it MyLib. When including the bundle in the browser |
| // it will be accessible at `window.MyLib` |
| output: { |
| path: PATHS.bundles, |
| filename: '[name].js', |
| libraryTarget: 'umd', |
| library: 'sdcPubSub', |
| umdNamedDefine: true |
| }, |
| // Add resolve for `tsx` and `ts` files, otherwise Webpack would |
| // only look for common JavaScript file extension (.js) |
| resolve: { |
| extensions: ['.ts', '.js'] |
| }, |
| // Activate source maps for the bundles in order to preserve the original |
| // source when the user debugs the application |
| devtool: 'source-map', |
| plugins: [ |
| // Apply minification only on the second bundle by |
| // using a RegEx on the name, which must end with `.min.js` |
| // NB: Remember to activate sourceMaps in UglifyJsPlugin |
| // since they are disabled by default! |
| new UglifyJsPlugin({ |
| sourceMap: true, |
| include: /\.min\.js$/, |
| }) |
| ], |
| module: { |
| // Webpack doesn't understand TypeScript files and a loader is needed. |
| // `node_modules` folder is excluded in order to prevent problems with |
| // the library dependencies, as well as `__tests__` folders that |
| // contain the tests for the library |
| rules: [ |
| { |
| test: /\.ts?$/, |
| use: [ |
| { |
| loader: 'ts-loader', |
| options: { |
| configFile: 'tsconfig.json' |
| } |
| } |
| ] |
| }] |
| } |
| }; |
| |
| module.exports = config; |