多维表格
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.

249 lines
7.6 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'))
const version = packageJson.version.replace(/\.(\d+)$/, (_, v) => {
// if (v === '99') throw new Error('Package version reached 99')
return `.${++v}`
})
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-32.png' }
]
},
/*
** Global CSS
*/
/*
** Plugins to load before mounting the App
** https://nuxtjs.org/guide/plugins
*/
plugins: [
'~/plugins/xutils.js',
{ src: '~plugins/localStorage.js', ssr: false },
{ src: '~plugins/confetti.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 }
],
/*
** 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
// const fs = require('fs');
// const packageJson = JSON.parse(fs.readFileSync('../xc-lib-gui/package.json', 'utf8'));
// const version = packageJson.version.replace(/\.(\d+)$/, (_, v) => {
// // if (v === '99') throw new Error('Package version reached 99')
// return `.${++v}`
// });
packageJson.version = version
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/>.
*
*/