|
|
@@ -1,52 +1,63 @@
|
|
|
const path = require('path');
|
|
|
const HtmlWebpackPlugin = require("html-webpack-plugin");
|
|
|
+const webpack = require('webpack');
|
|
|
+const dotenv = require('dotenv');
|
|
|
|
|
|
-module.exports = {
|
|
|
- entry: './src/index.tsx',
|
|
|
- target: 'web',
|
|
|
- mode: 'development',
|
|
|
- module: {
|
|
|
- rules: [
|
|
|
- {
|
|
|
- test: /\.(ts|tsx)$/,
|
|
|
- loader: "ts-loader",
|
|
|
- },
|
|
|
- {
|
|
|
- enforce: "pre",
|
|
|
- test: /\.js$/,
|
|
|
- loader: "source-map-loader",
|
|
|
- },
|
|
|
- {
|
|
|
- test: /\.(png|svg|jpg|gif|mp3)$/,
|
|
|
- use: [
|
|
|
- 'file-loader'
|
|
|
- ]
|
|
|
- },
|
|
|
- { test: /\.css$/, use: [ 'css-loader' ] },
|
|
|
- {
|
|
|
- test: /\.(woff(2)?|ttf|eot|svg)(\?v=\d+\.\d+\.\d+)?$/,
|
|
|
- use: [
|
|
|
- {
|
|
|
- loader: 'file-loader',
|
|
|
- options: {
|
|
|
- name: '[name].[ext]',
|
|
|
- outputPath: 'fonts/'
|
|
|
+module.exports = () => {
|
|
|
+ const env = dotenv.config().parsed;
|
|
|
+ const envKeys = Object.keys(env).reduce((prev, next) => {
|
|
|
+ prev[`process.env.${next}`] = JSON.stringify(env[next]);
|
|
|
+ return prev;
|
|
|
+ }, {});
|
|
|
+
|
|
|
+ return {
|
|
|
+ entry: './src/index.tsx',
|
|
|
+ target: 'web',
|
|
|
+ mode: 'development',
|
|
|
+ module: {
|
|
|
+ rules: [
|
|
|
+ {
|
|
|
+ test: /\.(ts|tsx)$/,
|
|
|
+ loader: "ts-loader",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ enforce: "pre",
|
|
|
+ test: /\.js$/,
|
|
|
+ loader: "source-map-loader",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ test: /\.(png|svg|jpg|gif|mp3)$/,
|
|
|
+ use: [
|
|
|
+ 'file-loader'
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ { test: /\.css$/, use: [ 'css-loader' ] },
|
|
|
+ {
|
|
|
+ test: /\.(woff(2)?|ttf|eot|svg)(\?v=\d+\.\d+\.\d+)?$/,
|
|
|
+ use: [
|
|
|
+ {
|
|
|
+ loader: 'file-loader',
|
|
|
+ options: {
|
|
|
+ name: '[name].[ext]',
|
|
|
+ outputPath: 'fonts/'
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- ]
|
|
|
- }
|
|
|
- ],
|
|
|
- },
|
|
|
- resolve: {
|
|
|
- extensions: ['*', '.tsx', '.ts', '.js', '.jsx', '.json'],
|
|
|
- },
|
|
|
- output: {
|
|
|
- filename: 'bundle.js',
|
|
|
- path: path.resolve(__dirname, 'build'),
|
|
|
- },
|
|
|
- plugins: [
|
|
|
- new HtmlWebpackPlugin({
|
|
|
- template: path.resolve(__dirname, "src", "index.html"),
|
|
|
- })
|
|
|
- ]
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ resolve: {
|
|
|
+ extensions: ['*', '.tsx', '.ts', '.js', '.jsx', '.json'],
|
|
|
+ },
|
|
|
+ output: {
|
|
|
+ filename: 'bundle.js',
|
|
|
+ path: path.resolve(__dirname, 'build'),
|
|
|
+ },
|
|
|
+ plugins: [
|
|
|
+ new HtmlWebpackPlugin({
|
|
|
+ template: path.resolve(__dirname, "src", "index.html"),
|
|
|
+ }),
|
|
|
+ new webpack.DefinePlugin(envKeys)
|
|
|
+ ]
|
|
|
+ }
|
|
|
};
|