MyCrypto/webpack_config/config.js

81 lines
2.0 KiB
JavaScript

'use strict';
const path = require('path');
const paths = {
root: path.join(__dirname, '../'),
src: path.join(__dirname, '../common'),
output: path.join(__dirname, '../dist'),
assets: path.join(__dirname, '../common/assets'),
static: path.join(__dirname, '../static'),
electron: path.join(__dirname, '../electron-app'),
shared: path.join(__dirname, '../shared'),
modules: path.join(__dirname, '../node_modules')
};
module.exports = {
// Configuration
port: process.env.HTTPS ? 3443 : 3000,
title: 'MyCrypto',
// description < 200 characters
description: 'MyCrypto is a free, open-source interface for interacting with the blockchain.',
url: 'https://mycrypto.com/',
type: 'website',
// img < 5MB
img: path.join(paths.assets, 'images/link-preview.png'),
twitter: {
creator: '@MyCrypto'
},
path: paths,
// Typescript rule config
typescriptRule: {
test: /\.(ts|tsx)$/,
include: [paths.src, paths.shared, paths.electron],
use: [{ loader: 'ts-loader', options: { happyPackMode: true, logLevel: 'info' } }],
exclude: ['assets', 'sass', 'vendor', 'translations/lang']
.map(dir => path.resolve(paths.src, dir))
.concat([paths.modules])
},
// File resolution
resolve: {
extensions: ['.ts', '.tsx', '.js', '.css', '.json', '.scss'],
modules: [paths.src, paths.modules, paths.root]
},
// Vendor modules
vendorModules: [
'bip39',
'bn.js',
'classnames',
'ethereum-blockies-base64',
'ethereumjs-abi',
'ethereumjs-tx',
'ethereumjs-util',
'ethereumjs-wallet',
'hdkey',
'idna-uts46',
'jsonschema',
'lodash',
'moment',
'normalizr',
'qrcode',
'qrcode.react',
'query-string',
'react',
'react-dom',
'react-markdown',
'react-redux',
'react-router-dom',
'react-router-redux',
'react-transition-group',
'redux',
'redux-logger',
'redux-saga',
'scryptsy',
'uuid',
'wallet-address-validator',
'whatwg-fetch'
]
};