146 lines
4.4 KiB
TypeScript
146 lines
4.4 KiB
TypeScript
import {defineConfig} from 'vitest/config';
|
|
import solidPlugin from 'vite-plugin-solid';
|
|
import handlebars from 'vite-plugin-handlebars';
|
|
import basicSsl from '@vitejs/plugin-basic-ssl';
|
|
import {visualizer} from 'rollup-plugin-visualizer';
|
|
import checker from 'vite-plugin-checker';
|
|
// import devtools from 'solid-devtools/vite'
|
|
import autoprefixer from 'autoprefixer';
|
|
import {resolve} from 'path';
|
|
import {existsSync} from 'fs';
|
|
import {ServerOptions} from 'vite';
|
|
|
|
const rootDir = resolve(__dirname);
|
|
|
|
const handlebarsPlugin = handlebars({ // octt: fork branding
|
|
context: {
|
|
title: 'Spaccogram Web', // 'Telegram Web',
|
|
description: 'Spaccogram Web is an unofficial fork of Telegram Web made for advanced users and developers.', // 'Telegram is a cloud-based mobile and desktop messaging app with a focus on security and speed.',
|
|
url: 'https://tweb.octt.eu.org/', // 'https://web.telegram.org/k/',
|
|
origin: 'https://tweb.octt.eu.org/', // 'https://web.telegram.org/'
|
|
}
|
|
});
|
|
|
|
const serverOptions: ServerOptions = {
|
|
// host: '192.168.95.17',
|
|
port: 8080,
|
|
sourcemapIgnoreList(sourcePath, sourcemapPath) {
|
|
return sourcePath.includes('node_modules') || sourcePath.includes('logger');
|
|
}
|
|
};
|
|
|
|
const SOLID_SRC_PATH = 'src/solid/packages/solid';
|
|
const SOLID_BUILT_PATH = 'src/vendor/solid';
|
|
const USE_SOLID_SRC = false;
|
|
const SOLID_PATH = USE_SOLID_SRC ? SOLID_SRC_PATH : SOLID_BUILT_PATH;
|
|
const USE_OWN_SOLID = existsSync(resolve(rootDir, SOLID_PATH));
|
|
|
|
const USE_SSL = false;
|
|
const NO_MINIFY = false;
|
|
const SSL_CONFIG: any = undefined && USE_SSL && {
|
|
name: '192.168.95.17',
|
|
certDir: './certs/'
|
|
};
|
|
|
|
const ADDITIONAL_ALIASES = {
|
|
'solid-transition-group': resolve(rootDir, 'src/vendor/solid-transition-group')
|
|
};
|
|
|
|
if(USE_OWN_SOLID) {
|
|
console.log('using own solid', SOLID_PATH, 'built', !USE_SOLID_SRC);
|
|
} else {
|
|
console.log('using original solid');
|
|
}
|
|
|
|
export default defineConfig({
|
|
plugins: [
|
|
// devtools({
|
|
// /* features options - all disabled by default */
|
|
// autoname: true // e.g. enable autoname
|
|
// }),
|
|
process.env.VITEST ? undefined : checker({
|
|
typescript: true,
|
|
eslint: {
|
|
// for example, lint .ts and .tsx
|
|
lintCommand: 'eslint "./src/**/*.{ts,tsx}" --ignore-pattern "/src/solid/*"'
|
|
}
|
|
}),
|
|
solidPlugin(),
|
|
handlebarsPlugin as any,
|
|
USE_SSL ? (basicSsl as any)(SSL_CONFIG) : undefined,
|
|
visualizer({
|
|
gzipSize: true,
|
|
template: 'treemap'
|
|
})
|
|
].filter(Boolean),
|
|
test: {
|
|
// include: ['**/*.{test,spec}.?(c|m)[jt]s?(x)'],
|
|
exclude: [
|
|
'**/node_modules/**',
|
|
'**/dist/**',
|
|
'**/cypress/**',
|
|
'**/.{idea,git,cache,output,temp}/**',
|
|
'**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build}.config.*',
|
|
'**/solid/**'
|
|
],
|
|
// coverage: {
|
|
// provider: 'v8',
|
|
// reporter: ['text', 'lcov'],
|
|
// include: ['src/**/*.ts', 'store/src/**/*.ts', 'web/src/**/*.ts'],
|
|
// exclude: ['**/*.d.ts', 'src/server/*.ts', 'store/src/**/server.ts']
|
|
// },
|
|
environment: 'jsdom',
|
|
testTransformMode: {web: ['.[jt]sx?$']},
|
|
// otherwise, solid would be loaded twice:
|
|
// deps: {registerNodeLoader: true},
|
|
// if you have few tests, try commenting one
|
|
// or both out to improve performance:
|
|
threads: false,
|
|
isolate: false,
|
|
globals: true,
|
|
setupFiles: ['./src/tests/setup.ts']
|
|
},
|
|
server: serverOptions,
|
|
base: '',
|
|
build: {
|
|
target: 'es2020',
|
|
sourcemap: true,
|
|
assetsDir: '',
|
|
copyPublicDir: false,
|
|
emptyOutDir: true,
|
|
minify: NO_MINIFY ? false : undefined,
|
|
rollupOptions: {
|
|
output: {
|
|
sourcemapIgnoreList: serverOptions.sourcemapIgnoreList
|
|
}
|
|
// input: {
|
|
// main: './index.html',
|
|
// sw: './src/index.service.ts'
|
|
// }
|
|
}
|
|
// cssCodeSplit: true
|
|
},
|
|
worker: {
|
|
format: 'es'
|
|
},
|
|
css: {
|
|
devSourcemap: true,
|
|
postcss: {
|
|
plugins: [
|
|
autoprefixer({}) // add options if needed
|
|
]
|
|
}
|
|
},
|
|
resolve: {
|
|
// conditions: ['development', 'browser'],
|
|
alias: USE_OWN_SOLID ? {
|
|
'rxcore': resolve(rootDir, SOLID_PATH, 'web/core'),
|
|
'solid-js/jsx-runtime': resolve(rootDir, SOLID_PATH, 'jsx'),
|
|
'solid-js/web': resolve(rootDir, SOLID_PATH, 'web'),
|
|
'solid-js/store': resolve(rootDir, SOLID_PATH, 'store'),
|
|
'solid-js': resolve(rootDir, SOLID_PATH),
|
|
...ADDITIONAL_ALIASES
|
|
} : ADDITIONAL_ALIASES
|
|
}
|
|
});
|