多维表格
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

277 lines
7.8 KiB

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/>.
*
*/