123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- const webpack = require('webpack');
- const writeFilePlugin = require('write-file-webpack-plugin');
- const webpackMerge = require('webpack-merge');
- const BrowserSyncPlugin = require('browser-sync-webpack-plugin');
- const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
- const FriendlyErrorsWebpackPlugin = require('friendly-errors-webpack-plugin');
- const SimpleProgressWebpackPlugin = require('simple-progress-webpack-plugin');
- const WebpackNotifierPlugin = require('webpack-notifier');
- const path = require('path');
- const sass = require('sass');
-
- const utils = require('./utils.js');
- const commonConfig = require('./webpack.common.js');
-
- const ENV = 'development';
-
- module.exports = (options) => webpackMerge(commonConfig({ env: ENV }), {
- devtool: 'eval-source-map',
- devServer: {
- contentBase: './target/www',
- proxy: [{
- context: [
- /* jhipster-needle-add-entity-to-webpack - JHipster will add entity api paths here */
- '/api',
- '/management',
- '/swagger-resources',
- '/v2/api-docs',
- '/h2-console',
- '/auth'
- ],
- target: `http${options.tls ? 's' : ''}://127.0.0.1:8080`,
- secure: false,
- changeOrigin: options.tls,
- headers: { host: 'localhost:9000' }
- }],
- stats: options.stats,
- watchOptions: {
- ignored: /node_modules/
- }
- },
- entry: {
- polyfills: './src/main/webapp/app/polyfills',
- global: './src/main/webapp/content/scss/global.scss',
- main: './src/main/webapp/app/app.main'
- },
- output: {
- path: utils.root('target/www'),
- filename: 'app/[name].bundle.js',
- chunkFilename: 'app/[id].chunk.js'
- },
- module: {
- rules: [{
- test: /\.ts$/,
- enforce: 'pre',
- loader: 'tslint-loader',
- exclude: [/(node_modules)/, new RegExp('reflect-metadata\\' + path.sep + 'Reflect\\.ts')]
- },
- {
- test: /\.ts$/,
- use: [
- 'angular2-template-loader',
- {
- loader: 'cache-loader',
- options: {
- cacheDirectory: path.resolve('target/cache-loader')
- }
- },
- {
- loader: 'thread-loader',
- options: {
- // there should be 1 cpu for the fork-ts-checker-webpack-plugin
- workers: require('os').cpus().length - 1
- }
- },
- {
- loader: 'ts-loader',
- options: {
- transpileOnly: true,
- happyPackMode: true
- }
- },
- 'angular-router-loader'
- ],
- exclude: /(node_modules)/
- },
- {
- test: /\.scss$/,
- use: ['to-string-loader', 'css-loader', {
- loader: 'sass-loader',
- options: { implementation: sass }
- }],
- exclude: /(vendor\.scss|global\.scss)/
- },
- {
- test: /(vendor\.scss|global\.scss)/,
- use: ['style-loader', 'css-loader', 'postcss-loader', {
- loader: 'sass-loader',
- options: { implementation: sass }
- }]
- },
- {
- test: /\.css$/,
- use: ['to-string-loader', 'css-loader'],
- exclude: /(vendor\.css|global\.css)/
- },
- {
- test: /(vendor\.css|global\.css)/,
- use: ['style-loader', 'css-loader']
- }]
- },
- stats: process.env.JHI_DISABLE_WEBPACK_LOGS ? 'none' : options.stats,
- plugins: [
- process.env.JHI_DISABLE_WEBPACK_LOGS
- ? null
- : new SimpleProgressWebpackPlugin({
- format: options.stats === 'minimal' ? 'compact' : 'expanded'
- }),
- new FriendlyErrorsWebpackPlugin(),
- new ForkTsCheckerWebpackPlugin(),
- new BrowserSyncPlugin({
- host: 'localhost',
- port: 9000,
- proxy: {
- target: 'http://localhost:9060'
- },
- socket: {
- clients: {
- heartbeatTimeout: 60000
- }
- }
- }, {
- reload: false
- }),
- new webpack.ContextReplacementPlugin(
- /angular(\\|\/)core(\\|\/)/,
- path.resolve(__dirname, './src/main/webapp')
- ),
- new writeFilePlugin(),
- new webpack.WatchIgnorePlugin([
- utils.root('src/test'),
- ]),
- new WebpackNotifierPlugin({
- title: 'JHipster',
- contentImage: path.join(__dirname, 'logo-jhipster.png')
- })
- ].filter(Boolean),
- mode: 'development'
- });
|