123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 |
- import { execSync } from 'child_process'
- import webpack from 'webpack'
- const hooks = (nuxtConfig) => ({
- 'generate:page': (page) => {
- page.html = modifyHtml(page.html)
- },
- 'render:route': (url, page, { req, res }) => {
- page.html = modifyHtml(page.html)
- }
- })
- let hasSourceMaps = '#source-map'
- if (process.env.NODE_ENV !== 'development') {
- // eslint-disable-next-line no-console
- console.log('NODE_ENV', process.env.NODE_ENV)
- hasSourceMaps = false
- }
- function getCurrentCommit() {
- try {
- return execSync('git rev-parse HEAD')
- .toString()
- .trim()
- .substr(0, 7)
- } catch (e) {
- console.error('Failed to get git commit', e.message)
- return 'debug'
- }
- }
- const modifyHtml = (html) => {
- return html.replace(/data-n-head=""|data-n-head="true"/g, '')
- }
- export default {
- target: 'static',
- ssr: false,
- /*
- ** Headers of the page
- */
- generate: {
- concurrency: 1,
- fallback: true
- },
- head: {
- title: 'Tornado.cash',
- meta: [
- { charset: 'utf-8' },
- {
- 'http-equiv': 'Content-Security-Policy',
- content:
- "img-src 'self' data:;font-src data:;style-src 'self' 'unsafe-inline';connect-src *;script-src 'self' 'unsafe-eval' 'unsafe-inline';default-src 'self';object-src 'none';base-uri 'none';upgrade-insecure-requests;child-src blob:;worker-src blob:;"
- },
- {
- name: 'Referer-Policy',
- content: 'no-referrer'
- },
- {
- name: 'viewport',
- content: 'width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no'
- },
- { name: 'theme-color', content: '#000403' },
- {
- hid: 'description',
- name: 'description',
- content: 'Non-custodial Ethereum Privacy solution.'
- },
- {
- hid: 'og:title',
- property: 'og:title',
- content: 'Tornado.Cash'
- },
- {
- hid: 'og:description',
- property: 'og:description',
- content: 'Non-custodial, trustless, serverless, private transactions on Ethereum network'
- },
- {
- hid: 'og:url',
- property: 'og:url',
- content: 'https://tornado.cash'
- },
- {
- hid: 'og:type',
- property: 'og:type',
- content: 'website'
- },
- {
- hid: 'og:image',
- property: 'og:image',
- content: 'https://tornado.cash/tw.png'
- },
- {
- hid: 'description',
- name: 'description',
- content: 'Non-custodial, trustless, serverless, private transactions on Ethereum network'
- },
- {
- hid: 'keywords',
- name: 'keywords',
- content:
- 'Tornado, Ethereum, ERC20, dapp, smart contract, decentralized, metamask, zksnark, zero knowledge'
- }
- ],
- link: [
- { rel: 'manifest', href: '/manifest.json' },
- { rel: 'shortcut icon', type: 'image/x-icon', href: '/favicon/favicon.ico' },
- { rel: 'apple-touch-icon', href: '/favicon/apple-touch-icon.png' }
- ]
- },
- /*
- ** Customize the progress-bar color
- */
- loading: { color: '#94febf', height: '5px', duration: 5000 },
- /*
- ** Global CSS
- */
- css: ['@/assets/styles/app.scss'],
- /*
- ** Plugins to load before mounting the App
- */
- plugins: [
- '~/plugins/ipfs.js',
- { src: '~plugins/clipboard', ssr: false },
- { src: '~plugins/detectIPFS', ssr: false },
- { src: '~plugins/localStorage', ssr: false },
- { src: '~plugins/preventMultitabs', ssr: false },
- { src: '~plugins/idb', ssr: false },
- { src: '~plugins/vidle', ssr: false },
- { src: '~plugins/sessionStorage', ssr: false },
- '~plugins/numbro/numbro',
- '~/plugins/i18n.js'
- ],
- /*
- ** Nuxt.js modules
- */
- modules: [
- // Doc: https://buefy.github.io/#/documentation
- [
- 'nuxt-buefy',
- {
- css: false,
- materialDesignIcons: false,
- defaultIconPack: 'trnd',
- defaultModalCanCancel: ['escape', 'button', 'outside'],
- defaultProgrammaticPromise: true,
- customIconPacks: {
- trnd: {
- sizes: {
- default: 'trnd-24px',
- 'is-small': null,
- 'is-medium': 'trnd-36px',
- 'is-large': 'trnd-48px'
- },
- iconPrefix: 'trnd-'
- }
- }
- }
- ],
- '@nuxtjs/eslint-module',
- 'nuxt-web3-provider'
- ],
- router: {
- linkActiveClass: '',
- linkExactActiveClass: 'is-active'
- },
- hooks: hooks(this),
- /*
- ** Build configuration
- */
- build: {
- /*
- ** You can extend webpack config here
- */
- extend(config, ctx) {
- if (ctx.isClient) {
- config.devtool = hasSourceMaps
- }
- config.module.rules.push({
- test: /\.bin$/,
- use: 'arraybuffer-loader'
- })
- },
- plugins: [
- new webpack.IgnorePlugin(/worker_threads/),
- new webpack.DefinePlugin({
- 'process.env': JSON.stringify({
- INFURA_KEY: process.env.INFURA_KEY,
- ALCHEMY_MAINNET_KEY: process.env.ALCHEMY_MAINNET_KEY,
- ALCHEMY_POLYGON_KEY: process.env.ALCHEMY_POLYGON_KEY,
- ALCHEMY_OPTIMISM_KEY: process.env.ALCHEMY_OPTIMISM_KEY,
- ALCHEMY_ARBITRUM_KEY: process.env.ALCHEMY_ARBITRUM_KEY,
- ALCHEMY_GOERLI_KEY: process.env.ALCHEMY_GOERLI_KEY,
- WC_BRIDGE: process.env.WC_BRIDGE,
- OLD_STORE_NAME: process.env.OLD_STORE_NAME,
- STORE_NAME: process.env.STORE_NAME,
- APP_ENS_NAME: process.env.APP_ENS_NAME
- })
- })
- ],
- html: {
- minify: {
- collapseWhitespace: true, // as @dario30186 mentioned
- removeComments: true // 👈 add this line
- }
- },
- loaders: {
- fontUrl: { limit: 25000 },
- imgUrl: { limit: 15000 }
- },
- splitChunks: {
- layouts: false,
- pages: false,
- commons: false
- }
- },
- buildModules: [
- [
- '@nuxtjs/moment',
- {
- defaultLocale: 'en',
- locales: ['ru', 'zh-cn', 'fr', 'es', 'tr', 'uk']
- }
- ]
- ],
- env: {
- commit: getCurrentCommit()
- },
- provider: {
- rpcUrl: `https://mainnet.infura.io/v3/${process.env.INFURA_KEY}`
- },
- // todo make custom loading page
- loadingIndicator: {
- name: 'circle',
- color: '#94febf',
- background: '#000'
- }
- }
|