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.
328 lines
8.6 KiB
328 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)
|
|
target: 'http://localhost:3466',// 本機
|
|
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
|
|
}
|
|
},
|
|
}
|
|
}
|