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.
 
 

327 lines
8.6 KiB

import colors from "vuetify/es5/util/colors";
import path from 'path';
import fs from 'fs';
export default {
// Disable server-side rendering: https://go.nuxtjs.dev/ssr-mode
loading: false,
head: {
titleTemplate: "%s│ShowEasy-we make your show easy!",
title: "showeasy-v2",
htmlAttrs: {
lang: "zh-TW",
},
meta: [
{
charset: "utf-8",
},
{
name: "viewport",
content: "width=device-width, initial-scale=1",
},
{
hid: "description",
name: "description",
content:
"ShowEasy致力發展一個讓人簡單搜尋、比價、訂購的會展整合平台,讓參展這件事變得不再困難。",
},
{
hid: "keywords",
name: "keywords",
content: "ShowEasy,會展,展覽,會展運輸,展覽品運輸,展覽品出口,世貿展覽館",
},
{
name: "format-detection",
content: "telephone=no",
},
],
link: [
{
rel: "icon",
type: "image/x-icon",
href: "/favicon.ico",
},
{
rel: "preconnect",
href: "https://fonts.googleapis.com",
},
{
rel: "preconnect",
href: "https://fonts.gstatic.com",
},
{
rel: "stylesheet",
href: "https://fonts.googleapis.com/css2?family=DM+Sans&display=swap",
},
{
rel: "stylesheet",
href: "https://fonts.googleapis.com/css2?family=Damion&display=swap",
},
{
rel: "stylesheet",
type: "text/css",
href: "https://cdnjs.cloudflare.com/ajax/libs/Swiper/8.1.4/swiper-bundle.css",
},
],
},
// Global CSS: https://go.nuxtjs.dev/config-css
css: [
'element-ui/lib/theme-chalk/index.css',
// '@/assets/css/tailwind.css',
"@/assets/css/showeasy-tailwind.css",
"@/assets/scss/all.scss",
"@/assets/scss/editor.scss",
"swiper/swiper-bundle.css",
],
render: {
resourceHints: true, //啓用預加載
asyncScripts: true
},
// Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins
plugins: [
{ src: '@/plugins/element-ui', ssr: true },
{ src: "~/plugins/axios", ssr: true },
{ src: "~/plugins/vueLazyload.js", ssr: false },
{ src: "~/plugins/vue-awesome-swiper", ssr: false },
{ src: "~/plugins/vue-notification.js", ssr: false },
{ src: "~/plugins/vue-unicons", mode: "client" },
{ src: "~/plugins/vue-phone-number-input", mode: "client",ssr: false },
{ src: "~/plugins/scrollActive", ssr: false },
{ src: "~/plugins/vue-js-modal" },
{ src: "~/plugins/vue-time-picker", ssr: false },
{ src: "~/plugins/ant-design-vue"},
{ src: "~/plugins/vue-slider-component", ssr: false },
{ src: "~/plugins/vueCompositionAPI" },
{ src: "~/plugins/vue-scroll-to" },
{ src: "~/plugins/photoswipe", mode: "client", ssr: false },
{ src: "~/plugins/plugins-print", mode: "client", ssr: false },
// {src: "~/plugins/storeCache", ssr: false },
// { src: '@/plugins/router', ssr: false} // 先僅用路由前獲取OrgID
],
// Auto import components: https://go.nuxtjs.dev/config-components
components: true,
// Modules for dev and build (recommended): https://go.nuxtjs.dev/config-modules
buildModules: [
// https://go.nuxtjs.dev/vuetify
"@nuxtjs/vuetify",
// '@nuxtjs/tailwindcss'
'@nuxt/postcss8',
"@nuxtjs/dotenv",
],
// Modules: https://go.nuxtjs.dev/config-modules
modules: [
// https://go.nuxtjs.dev/axios
'@nuxtjs/axios',
"@nuxtjs/i18n",
"@nuxtjs/auth-next",
"@nuxtjs/robots",
"nuxt-route-meta",
"cookie-universal-nuxt",
["vue-scrollto/nuxt", { duration: 300 }],
],
// Axios module configuration: https://go.nuxtjs.dev/config-axios
axios: {
// Workaround to avoid enforcing hard-coded localhost:3000: https://github.com/nuxt-community/axios-module/issues/308
// baseURL: 'http://beta.ptcgvip.com',
proxy: true,
// prefix: '/api'
},
server: {
https: {
key: fs.readFileSync(path.resolve(__dirname, 'SSL/key_showeasy_com.key')),
cert: fs.readFileSync(path.resolve(__dirname, 'SSL/cert_showeasy_com.crt')),
}
},
proxy: {
'/trending': {
// target: 'http://www.origtek.com:3002',// 服務地址
target: 'https://showeasy.com:5000',// API 正式機
// target: 'http://showeasy.com:3001',// API 測式機 (無SSL)
pathRewrite: {
'^/trending': '/'
},
changeOrigin: true
}
},
i18n: {
vueI18n: {
silentTranslationWarn: true,
silentFallbackWarn: true,
},
// locales: ["en", "zh-tw"],
defaultLocale: process.env.VUE_APP_I18N_LOCALE || "zh-tw",
lazy: true,
langDir: "~/locales/",
locales: [
// {
// code: "en",
// iso: "en-EN",
// file: "en.json",
// langQuery: "en-US",
// title: "English",
// text: "English (Global)",
// },
{
code: "zh-tw",
iso: "zh-TW",
file: "zh-tw.json",
langQuery: "zh-TW",
title: "繁體中文",
text: "繁體中文(台灣)",
},
],
},
// 在nuxt.config.js中配置auth
auth: {
strategies: {
local: {
token: {
required: false,
},
user: {
property: "data",
},
endpoints: {
login: {
// url: '/member/users/login',
url: "/trending/api/system/Login",
methods: "post",
},
logout: false,
user: false,
},
},
// 需要使用@nuxtjs/auth-next
facebook: {
endpoints: {
userInfo:
"https://graph.facebook.com/v6.0/me?fields=id,first_name,last_name,email,picture{url}",
},
clientId: "1080300752875237",
scope: ["public_profile", "email"],
},
google: {
clientId:
"707328878971-7prt1v233u2e78e7ugp4sqlso5c2bpk5.apps.googleusercontent.com",
responseType: "token id_token",
codeChallengeMethod: "",
},
},
redirect: {
login: "/user",
callback: "/user/socialCallback",
home: false,
logout: "/",
},
plugins: ["@/plugins/auth-lang-redirect.js"],
localStorage: false,
watchLoggedIn: false,
},
router: {
middleware: ['auth'],
},
// Vuetify module configuration: https://go.nuxtjs.dev/config-vuetify
vuetify: {
customVariables: ["~/assets/scss/_variables.scss"],
treeShake: true,
theme: {
dark: false,
themes: {
light: {
primary: {
base: "#EE9546",
lighten1: "#F5CDA8",
lighten2: "#F7EDE4",
},
warning: {
base: "#EF5A5A",
lighten1: "#E99E9E",
},
complementary: {
base: "#7997FF",
lighten1: "#F4B927",
},
neutrals: {
base: "#FEFEFE",
darken1: "#F8F8F8",
darken2: "#E5E5E5",
darken3: "#9C9C9C",
darken4: "#504F4F",
darken5: "#232323",
},
},
dark: {
primary: colors.blue.darken2,
accent: colors.grey.darken3,
secondary: colors.amber.darken3,
info: colors.teal.lighten1,
warning: colors.amber.base,
error: colors.deepOrange.accent4,
success: colors.green.accent3,
},
},
},
breakpoint: {
thresholds: {
xs: 390,
sm: 540,
md: 768,
lg: 1280,
xl: 1366,
},
},
},
// 允許爬蟲抓取
robots: {
UserAgent: "*",
Allow: "*",
},
googleFonts: {},
// Build Configuration: https://go.nuxtjs.dev/config-build
build: {
vendor: ['element-ui'],
postcss: {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
},
terser: {
// https://github.com/terser/terser#compress-options
terserOptions: {
compress: {
drop_console: true // 生產環境中禁用console.log
}
}
},
extend (config, { isDev, isClient }) {
config.node = {
fs: 'empty'
}
},
extractCSS: process.env.ENV === 'production',
//html minify
html:{
minify:{
collapseBooleanAttributes: true,
decodeEntities: true,
minifyCSS: true,
minifyJS: true,
processConditionalComments: true,
removeEmptyAttributes: true,
removeRedundantAttributes: true,
trimCustomFragments: true,
useShortDoctype: true,
minifyURLs: true,
removeComments: true,
removeEmptyElements: true
}
},
}
}