| import * as webpack from 'webpack'; |
| import * as path from 'path'; |
| import * as fs from 'fs'; |
| import * as angularExternals from 'webpack-angular-externals'; |
| import * as rxjsExternals from 'webpack-rxjs-externals'; |
| |
| const UglifyJsPlugin = require("uglifyjs-webpack-plugin"); |
| const pkg = JSON.parse(fs.readFileSync('./package.json').toString()); |
| |
| export default { |
| entry: { |
| 'index.umd': './src/angular/index.ts', |
| 'index.umd.min': './src/angular/index.ts', |
| }, |
| output: { |
| path: path.join(__dirname, 'dist'), |
| filename: '[name].js', |
| libraryTarget: 'umd', |
| library: 'onap-ui-angular' |
| }, |
| resolve: { |
| extensions: [ '.ts', '.js', '.json' ] |
| }, |
| externals: [ |
| angularExternals(), |
| rxjsExternals() |
| ], |
| devtool: 'source-map', |
| module: { |
| rules: [ |
| { |
| test: /\.ts$/, |
| use: [ |
| { |
| loader: 'ts-loader', |
| options: { |
| configFile: "tsconfig-aot.json" |
| } |
| }, |
| { |
| loader: 'angular2-template-loader' |
| } |
| ], |
| exclude: [ |
| /node_modules/, |
| /\.(spec|e2e)\.ts$/ |
| ] |
| }, |
| |
| { |
| test: /\.json$/, |
| use: 'json-loader' |
| }, |
| |
| { |
| test: /\.css$/, |
| use: ['to-string-loader', 'css-loader'] |
| }, |
| |
| { |
| test: /\.scss$/, |
| use: ['to-string-loader', 'css-loader', 'sass-loader'] |
| }, |
| |
| { |
| test: /\.html$/, |
| use: 'raw-loader' |
| } |
| ] |
| }, |
| plugins: [ |
| new webpack.ContextReplacementPlugin( |
| /angular(\\|\/)core(\\|\/)@angular/, |
| path.join(__dirname, 'src/angular') |
| ), |
| |
| new UglifyJsPlugin({ |
| include: /\.min\.js$/, |
| sourceMap: true |
| }), |
| |
| new webpack.BannerPlugin({ |
| banner: ` |
| /** |
| * ${pkg.name} - ${pkg.description} |
| * @version v${pkg.version} |
| * @author ${pkg.author.name} |
| * @link ${pkg.homepage} |
| * @license ${pkg.license} |
| */ |
| `.trim(), |
| raw: true, |
| entryOnly: true |
| }) |
| |
| ] |
| } as webpack.Configuration; |