mirror of https://github.com/grafana/grafana.git
				
				
				
			
		
			
				
	
	
		
			111 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| 'use strict';
 | |
| 
 | |
| const merge = require('webpack-merge');
 | |
| const common = require('./webpack.common.js');
 | |
| const path = require('path');
 | |
| const webpack = require('webpack');
 | |
| const HtmlWebpackPlugin = require("html-webpack-plugin");
 | |
| const HtmlWebpackHarddiskPlugin = require('html-webpack-harddisk-plugin');
 | |
| const CleanWebpackPlugin = require('clean-webpack-plugin');
 | |
| 
 | |
| module.exports = merge(common, {
 | |
|   entry: {
 | |
|     app: [
 | |
|       'webpack-dev-server/client?http://localhost:3333',
 | |
|       './public/app/dev.ts',
 | |
|     ],
 | |
|   },
 | |
| 
 | |
|   output: {
 | |
|     path: path.resolve(__dirname, '../../public/build'),
 | |
|     filename: '[name].[hash].js',
 | |
|     publicPath: "/public/build/",
 | |
|     pathinfo: false,
 | |
|   },
 | |
| 
 | |
|   resolve: {
 | |
|     extensions: ['.scss', '.ts', '.tsx', '.es6', '.js', '.json', '.svg', '.woff2', '.png', '.html'],
 | |
|   },
 | |
| 
 | |
|   devtool: 'eval-source-map',
 | |
| 
 | |
|   devServer: {
 | |
|     publicPath: '/public/build/',
 | |
|     hot: true,
 | |
|     port: 3333,
 | |
|     proxy: {
 | |
|       '!/public/build': 'http://localhost:3000'
 | |
|     }
 | |
|   },
 | |
| 
 | |
|   optimization: {
 | |
|     removeAvailableModules: false,
 | |
|     removeEmptyChunks: false,
 | |
|     splitChunks: false,
 | |
|   },
 | |
| 
 | |
|   module: {
 | |
|     rules: [
 | |
|       {
 | |
|         test: /\.(j|t)sx?$/,
 | |
|         exclude: /node_modules/,
 | |
|         use: [{
 | |
|           loader: 'babel-loader',
 | |
|           options: {
 | |
|             cacheDirectory: true,
 | |
|             babelrc: false,
 | |
|             plugins: [
 | |
|               ["@babel/plugin-proposal-class-properties", { loose: true }],
 | |
|               'angularjs-annotate',
 | |
|               'syntax-dynamic-import', // needed for `() => import()` in routes.ts
 | |
|               'react-hot-loader/babel'
 | |
|             ],
 | |
|             presets: [
 | |
|               [
 | |
|                 '@babel/preset-env',
 | |
|                 {
 | |
|                   targets: { browsers: 'last 3 versions' },
 | |
|                   useBuiltIns: 'entry'
 | |
|                 }
 | |
|               ],
 | |
|               '@babel/preset-typescript',
 | |
|               '@babel/preset-react'
 | |
|             ],
 | |
|           }
 | |
|         }],
 | |
|       },
 | |
|       {
 | |
|         test: /\.scss$/,
 | |
|         use: [
 | |
|           "style-loader", // creates style nodes from JS strings
 | |
|           "css-loader", // translates CSS into CommonJS
 | |
|           "sass-loader" // compiles Sass to CSS
 | |
|         ]
 | |
|       },
 | |
|       {
 | |
|         test: /\.(png|jpg|gif|ttf|eot|svg|woff(2)?)(\?[a-z0-9=&.]+)?$/,
 | |
|         loader: 'file-loader'
 | |
|       },
 | |
|     ]
 | |
|   },
 | |
| 
 | |
|   plugins: [
 | |
|     new CleanWebpackPlugin('../public/build', { allowExternal: true }),
 | |
|     new HtmlWebpackPlugin({
 | |
|       filename: path.resolve(__dirname, '../../public/views/index.html'),
 | |
|       template: path.resolve(__dirname, '../../public/views/index.template.html'),
 | |
|       inject: 'body',
 | |
|       alwaysWriteToDisk: true
 | |
|     }),
 | |
|     new HtmlWebpackHarddiskPlugin(),
 | |
|     new webpack.NamedModulesPlugin(),
 | |
|     new webpack.HotModuleReplacementPlugin(),
 | |
|     new webpack.DefinePlugin({
 | |
|       'GRAFANA_THEME': JSON.stringify(process.env.GRAFANA_THEME || 'dark'),
 | |
|       'process.env': {
 | |
|         'NODE_ENV': JSON.stringify('development')
 | |
|       }
 | |
|     }),
 | |
|   ]
 | |
| });
 |