|
|
|
import MonacoEditorWebpackPlugin from 'monaco-editor-webpack-plugin';
|
|
|
|
|
|
|
|
// import HtmlWebpackPlugin from 'html-webpack-plugin';
|
|
|
|
const fs = require('fs');
|
|
|
|
const packageJson = JSON.parse(fs.readFileSync('../nc-lib-gui/package.json', 'utf8'));
|
|
|
|
export default {
|
|
|
|
/*
|
|
|
|
** Nuxt rendering mode
|
|
|
|
** See https://nuxtjs.org/api/configuration-mode
|
|
|
|
*/
|
|
|
|
mode: 'spa',
|
|
|
|
// ssr: false,
|
|
|
|
/*
|
|
|
|
** Nuxt target
|
|
|
|
** See https://nuxtjs.org/api/configuration-target
|
|
|
|
*/
|
|
|
|
target: 'server',
|
|
|
|
/*
|
|
|
|
** Headers of the page
|
|
|
|
** See https://nuxtjs.org/api/configuration-head
|
|
|
|
*/
|
|
|
|
head: {
|
|
|
|
titleTemplate: '',
|
|
|
|
title: 'NocoDB',
|
|
|
|
meta: [
|
|
|
|
{ charset: 'utf-8' },
|
|
|
|
{
|
|
|
|
name: 'viewport',
|
|
|
|
content: 'width=device-width, initial-scale=1',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
hid: 'description',
|
|
|
|
name: 'description',
|
|
|
|
content: process.env.npm_package_description || '',
|
|
|
|
},
|
|
|
|
],
|
|
|
|
link: [
|
|
|
|
{
|
|
|
|
rel: 'icon',
|
|
|
|
type: 'image/x-icon',
|
|
|
|
href: './favicon.ico',
|
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
|
|
|
/*
|
|
|
|
** Global CSS
|
|
|
|
*/
|
|
|
|
/*
|
|
|
|
** Plugins to load before mounting the App
|
|
|
|
** https://nuxtjs.org/guide/plugins
|
|
|
|
*/
|
|
|
|
plugins: [
|
|
|
|
{ src: '~plugins/api.js' },
|
|
|
|
'~/plugins/xutils.js',
|
|
|
|
{
|
|
|
|
src: '~plugins/localStorage.js',
|
|
|
|
ssr: false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
src: '~plugins/confetti.js',
|
|
|
|
ssr: false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
src: '~plugins/domPurify.js',
|
|
|
|
ssr: false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
src: '~plugins/axiosInterceptor.js',
|
|
|
|
ssr: false,
|
|
|
|
},
|
|
|
|
'@/plugins/veeValidate',
|
|
|
|
'@/plugins/vueTour',
|
|
|
|
{
|
|
|
|
src: '@/plugins/vueShortkey',
|
|
|
|
ssr: false,
|
|
|
|
},
|
|
|
|
'@/plugins/vueClipboard',
|
|
|
|
'@/plugins/globalComponentLoader',
|
|
|
|
'@/plugins/globalMixin',
|
|
|
|
'@/plugins/globalEventBus',
|
|
|
|
'@/plugins/ncApis',
|
|
|
|
'~/plugins/i18n.js',
|
|
|
|
{
|
|
|
|
src: '~plugins/projectLoader.js',
|
|
|
|
ssr: false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
src: '~/plugins/tele.js',
|
|
|
|
ssr: false,
|
|
|
|
},
|
|
|
|
],
|
|
|
|
/*
|
|
|
|
** Auto import components
|
|
|
|
** See https://nuxtjs.org/api/configuration-components
|
|
|
|
*/
|
|
|
|
// components: true,
|
|
|
|
/*
|
|
|
|
** Nuxt.js dev-modules
|
|
|
|
*/
|
|
|
|
buildModules: ['@nuxtjs/vuetify'],
|
|
|
|
/*
|
|
|
|
** Nuxt.js modules
|
|
|
|
*/
|
|
|
|
modules: [
|
|
|
|
// Doc: https://axios.nuxtjs.org/usage
|
|
|
|
'@nuxtjs/axios',
|
|
|
|
'vue-github-buttons/nuxt',
|
|
|
|
'@nuxtjs/toast',
|
|
|
|
],
|
|
|
|
toast: {
|
|
|
|
position: 'top-center',
|
|
|
|
},
|
|
|
|
/*
|
|
|
|
** Axios module configuration
|
|
|
|
** See https://axios.nuxtjs.org/options
|
|
|
|
*/
|
|
|
|
axios: {
|
|
|
|
baseURL: process.env.NC_BACKEND_URL || (process.env.NODE_ENV === 'production' ? '..' : 'http://localhost:8080'),
|
|
|
|
},
|
|
|
|
/*
|
|
|
|
** vuetify module configuration
|
|
|
|
** https://github.com/nuxt-community/vuetify-module
|
|
|
|
*/
|
|
|
|
router: {
|
|
|
|
mode: 'hash',
|
|
|
|
// base: '/xc/',
|
|
|
|
middleware: ['auth'],
|
|
|
|
},
|
|
|
|
vuetify: {
|
|
|
|
defaultAssets: {
|
|
|
|
// font: false,
|
|
|
|
icons: false,
|
|
|
|
},
|
|
|
|
optionsPath: '@/config/vuetify.options.js',
|
|
|
|
treeShake: true,
|
|
|
|
customVariables: ['./config/variables.scss'],
|
|
|
|
},
|
|
|
|
/*
|
|
|
|
** Build configuration
|
|
|
|
** See https://nuxtjs.org/api/configuration-build/
|
|
|
|
*/
|
|
|
|
build: {
|
|
|
|
parallel: true,
|
|
|
|
plugins: [
|
|
|
|
new MonacoEditorWebpackPlugin({
|
|
|
|
// https://github.com/Microsoft/monaco-editor-webpack-plugin#options
|
|
|
|
// Include a subset of languages support
|
|
|
|
// Some language extensions like typescript are so huge that may impact build performance
|
|
|
|
// e.g. Build full languages support with webpack 4.0 takes over 80 seconds
|
|
|
|
// Languages are loaded on demand at runtime
|
|
|
|
languages: ['sql', 'json', 'javascript'],
|
|
|
|
features: ['!gotoSymbol'],
|
|
|
|
}),
|
|
|
|
],
|
|
|
|
// publicPath: process.env.NODE_ENV === 'production' ? `https://cdn.jsdelivr.net/npm/nc-lib-gui@${version}/lib/dist/` : undefined,
|
|
|
|
publicPath: process.env.NODE_ENV === 'production' ? './_nuxt/' : undefined,
|
|
|
|
extend(config, { isDev, isClient }) {
|
|
|
|
if (isDev) {
|
|
|
|
config.devtool = isClient ? 'source-map' : 'inline-source-map';
|
|
|
|
}
|
|
|
|
|
|
|
|
config.externals = config.externals || {};
|
|
|
|
config.externals['@microsoft/typescript-etw'] = 'FakeModule';
|
|
|
|
|
|
|
|
// config.plugins.push(new MonacoEditorWebpackPlugin({
|
|
|
|
// languages: ['javascript', 'typescript', 'json', 'mysql', 'sql', 'pgsql'],
|
|
|
|
// features: ['!gotoSymbol', '!goToCommands']
|
|
|
|
// }))
|
|
|
|
|
|
|
|
if (!isDev) {
|
|
|
|
// const WebpackObfuscator = require('webpack-obfuscator');
|
|
|
|
// config.plugins.push(new WebpackObfuscator({
|
|
|
|
// compact: true,
|
|
|
|
// controlFlowFlattening: false,
|
|
|
|
// deadCodeInjection: false,
|
|
|
|
// debugProtection: false,
|
|
|
|
// debugProtectionInterval: false,
|
|
|
|
// disableConsoleOutput: true,
|
|
|
|
// identifierNamesGenerator: 'hexadecimal',
|
|
|
|
// log: false,
|
|
|
|
// numbersToExpressions: false,
|
|
|
|
// renameGlobals: false,
|
|
|
|
// rotateStringArray: true,
|
|
|
|
// selfDefending: true,
|
|
|
|
// shuffleStringArray: true,
|
|
|
|
// simplify: true,
|
|
|
|
// splitStrings: false,
|
|
|
|
// stringArray: true,
|
|
|
|
// stringArrayEncoding: false,
|
|
|
|
// stringArrayThreshold: 0.75,
|
|
|
|
// unicodeEscapeSequence: false
|
|
|
|
// }))
|
|
|
|
|
|
|
|
// relative links, please.
|
|
|
|
// config.output.publicPath = "http://35.244.225.21/_nuxt/";
|
|
|
|
// config.output.publicPath = "./_nuxt/";
|
|
|
|
// NOTE: future release version of xc-lib-gui
|
|
|
|
|
|
|
|
if (process.env.targetEnv === 'DEV') {
|
|
|
|
// nightly build
|
|
|
|
// e.g. 0.84.2-20220220-1250
|
|
|
|
packageJson.version = `${packageJson.version}-${process.env.targetVersion}`;
|
|
|
|
packageJson.name += '-daily';
|
|
|
|
} else {
|
|
|
|
packageJson.version = process.env.targetVersion;
|
|
|
|
}
|
|
|
|
fs.writeFileSync('../nc-lib-gui/package.json', JSON.stringify(packageJson, 0, 2));
|
|
|
|
|
|
|
|
// config.output.publicPath = `https://cdn.jsdelivr.net/npm/nc-lib-gui@${version}/lib/dist/`;
|
|
|
|
// const htmlWebpack = config.plugins.find(w => w instanceof HtmlWebpackPlugin);
|
|
|
|
// htmlWebpack.options.publicPath = `https://cdn.jsdelivr.net/npm/xc-lib-gui@${version}/lib/dist/_nuxt/`;
|
|
|
|
// const templateParams = htmlWebpack.templateParameters
|
|
|
|
// htmlWebpack.templateParameters = (...args) =>{
|
|
|
|
// const res = templateParams(...args);
|
|
|
|
// return res;
|
|
|
|
// };
|
|
|
|
}
|
|
|
|
if (!isDev) {
|
|
|
|
config.output.publicPath = './_nuxt/';
|
|
|
|
}
|
|
|
|
|
|
|
|
return config;
|
|
|
|
},
|
|
|
|
},
|
|
|
|
loading: {
|
|
|
|
color: '#13f4ef',
|
|
|
|
height: '0px',
|
|
|
|
continuous: true,
|
|
|
|
duration: 3000,
|
|
|
|
},
|
|
|
|
css: [
|
|
|
|
'@/assets/style/fonts.css',
|
|
|
|
'@/assets/css/global.css',
|
|
|
|
// "~/assets/style/app.styl",
|
|
|
|
'@mdi/font/css/materialdesignicons.css',
|
|
|
|
'~/assets/style/style.css',
|
|
|
|
'~/assets/style.css',
|
|
|
|
'material-design-icons-iconfont/dist/material-design-icons.css',
|
|
|
|
],
|
|
|
|
env: {
|
|
|
|
EE: !!process.env.EE,
|
|
|
|
NC_API_URL: 'https://nocodb.com',
|
|
|
|
},
|
|
|
|
pwa: {
|
|
|
|
workbox: {
|
|
|
|
/* workbox options */
|
|
|
|
assetsURLPattern: './_nuxt/',
|
|
|
|
pagesURLPattern: './',
|
|
|
|
},
|
|
|
|
manifest: {
|
|
|
|
publicPath: './',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
};
|
|
|
|
/**
|
|
|
|
* @copyright Copyright (c) 2021, Xgene Cloud Ltd
|
|
|
|
*
|
|
|
|
* @author Naveen MR <oof1lab@gmail.com>
|
|
|
|
* @author Pranav C Balan <pranavxc@gmail.com>
|
|
|
|
* @author Wing-Kam Wong <wingkwong.code@gmail.com>
|
|
|
|
*
|
|
|
|
* @license GNU AGPL version 3 or any later version
|
|
|
|
*
|
|
|
|
* This program is free software: you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU Affero General Public License as
|
|
|
|
* published by the Free Software Foundation, either version 3 of the
|
|
|
|
* License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU Affero General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Affero General Public License
|
|
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
*
|
|
|
|
*/
|