Tornado Contrib
355e1e88ce
Either ts-loader or babel-loader to bundle workers didn't work properly so I transpiled them by hand
169 lines
4.4 KiB
TypeScript
169 lines
4.4 KiB
TypeScript
import type { NuxtConfig } from '@nuxt/types'
|
|
|
|
import webpack from 'webpack'
|
|
import { execSync } from 'child_process'
|
|
|
|
function getCurrentCommit() {
|
|
try {
|
|
const from = 0
|
|
const length = 7
|
|
|
|
return execSync('git rev-parse HEAD').toString().trim().substr(from, length)
|
|
} catch (e) {
|
|
console.error('Failed to get git commit', e.message)
|
|
return 'debug'
|
|
}
|
|
}
|
|
|
|
const config: NuxtConfig = {
|
|
target: 'static',
|
|
ssr: false,
|
|
|
|
generate: {
|
|
concurrency: 1,
|
|
fallback: true,
|
|
},
|
|
head: {
|
|
title: 'Tornado Cash Nova',
|
|
htmlAttrs: {
|
|
lang: 'en',
|
|
},
|
|
meta: [
|
|
{ charset: 'utf-8' },
|
|
{ name: 'viewport', content: 'width=device-width, initial-scale=1.0' },
|
|
{
|
|
hid: 'description',
|
|
name: 'description',
|
|
content: 'Non-custodial Ethereum Privacy solution with arbitrary amounts and shielded transfers.',
|
|
},
|
|
{
|
|
name: 'keywords',
|
|
content: 'Privacy, Ethereum, ERC20, dapp, smart contract, decentralized, metamask, zksnark, zero knowledge',
|
|
},
|
|
{
|
|
name: 'author',
|
|
content: 'Tornado.cash',
|
|
},
|
|
{
|
|
name: 'msapplication-TileColor',
|
|
content: '#1d1e23',
|
|
},
|
|
{ name: 'theme-color', content: '#1d1e23' },
|
|
|
|
{ property: 'og:type', content: 'website' },
|
|
{ property: 'og:title', content: 'Tornado.cash Nova' },
|
|
{ property: 'og:site_name', content: 'Tornado.cash Nova' },
|
|
|
|
{ property: 'og:image:type', content: 'image/png' },
|
|
{ property: 'og:image:width', content: '1200' },
|
|
{ property: 'og:image:height', content: '1200' },
|
|
{ property: 'og:image', content: 'https://tornado.cash/nova.png' },
|
|
|
|
{ name: 'twitter:card', content: 'summary' },
|
|
{ name: 'twitter:site', content: '@TornadoCash' },
|
|
{ name: 'twitter:domain', content: 'https://tornado.cash' },
|
|
{ name: 'twitter:title', content: 'Tornado.cash Nova' },
|
|
{
|
|
name: 'twitter:description',
|
|
content: 'Non-custodial Ethereum Privacy solution with arbitrary amounts and shielded transfers.',
|
|
},
|
|
{ name: 'twitter:image:src', content: 'https://tornado.cash/nova.png' },
|
|
{ name: 'twitter:image:alt', content: 'Tornado.cash' },
|
|
],
|
|
link: [
|
|
{ rel: 'icon', href: '/icons/favicon.ico', sizes: 'any' },
|
|
{ rel: 'icon', href: '/icons/icon.svg', type: 'image/svg+xml' },
|
|
{ rel: 'apple-touch-icon', href: '/icons/apple-touch-icon.png' },
|
|
{ rel: 'manifest', href: '/manifest.webmanifest' },
|
|
|
|
{ rel: 'preconnect', href: 'https://fonts.gstatic.com' },
|
|
{
|
|
rel: 'stylesheet',
|
|
href: 'https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&display=swap',
|
|
},
|
|
],
|
|
},
|
|
|
|
css: ['@/assets/styles/index.scss'],
|
|
|
|
plugins: [
|
|
'@/plugins/idb.ts',
|
|
'@/plugins/ipfs.ts',
|
|
'@/plugins/persist.ts',
|
|
'@/plugins/vue-tooltip.ts',
|
|
'@/plugins/vue-js-modal.ts',
|
|
'@/plugins/vue-notification.ts',
|
|
'@/plugins/prevent-multitabs.ts',
|
|
],
|
|
|
|
typescript: {
|
|
typeCheck: false,
|
|
},
|
|
|
|
styleResources: {
|
|
scss: ['@/assets/styles/_variables.scss', '@/assets/styles/*.scss'],
|
|
},
|
|
|
|
components: true,
|
|
router: {
|
|
extendRoutes(routes, resolve) {
|
|
routes.push({
|
|
path: '/',
|
|
component: resolve(__dirname, 'pages/fund.vue'),
|
|
})
|
|
},
|
|
},
|
|
buildModules: ['@nuxt/typescript-build'],
|
|
|
|
modules: ['@nuxtjs/style-resources'],
|
|
|
|
build: {
|
|
extend(config, { isClient }) {
|
|
if (config?.output != null) {
|
|
config.output.globalObject = 'this'
|
|
}
|
|
if (config?.module != null) {
|
|
/**
|
|
if (isClient) {
|
|
config.module.rules.push({
|
|
test: /\.worker\.js$/,
|
|
loader: 'worker-loader',
|
|
exclude: /(node_modules)/,
|
|
options: {
|
|
filename: 'workers/[name].js',
|
|
},
|
|
})
|
|
}
|
|
**/
|
|
|
|
config.module.rules.push({
|
|
test: /\.bin$/,
|
|
use: 'arraybuffer-loader',
|
|
})
|
|
}
|
|
},
|
|
plugins: [new webpack.IgnorePlugin(/worker_threads/)],
|
|
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,
|
|
},
|
|
},
|
|
|
|
env: {
|
|
commit: getCurrentCommit(),
|
|
},
|
|
}
|
|
|
|
export default config
|