lightlimx-website/nuxt.config.js

138 lines
3.8 KiB
JavaScript

import redirectSSL from "redirect-ssl";
import serveStatic from "serve-static";
import { resolve } from "path";
const baseUrl = process.env.BASE_URL || "https://api.lightlimx.live/api";
export default {
ssr: false,
loading: "~/components/Loading/index.vue",
serverMiddleware: [
// redirectSSL.create({
// enabled: process.env.NODE_ENV === 'production'
// }),
{ path: "/static", handler: serveStatic(__dirname + "/static") },
],
telemetry: false,
publicRuntimeConfig: {
baseURL: baseUrl,
axios: {
baseURL: baseUrl,
},
},
env: {
baseUrl: process.env.BASE_URL || "http://localhost:3000",
apiUrl: "/api",
},
alias: {
"@": resolve(__dirname),
"~": resolve(__dirname),
style: resolve(__dirname, "./assets/style"),
images: resolve(__dirname, "./assets/images"),
data: resolve(__dirname, "./assets/data"),
},
// Global page headers: https://go.nuxtjs.dev/config-head
head: {
title: "LightLimX",
htmlAttrs: {
lang: "en",
},
bodyAttrs: {
class: "h5-scroll-bar",
},
meta: [
{ charset: "utf-8" },
//width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no
{
name: "viewport",
content:
"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no,minimal-ui,viewport-fit=cover",
},
{ hid: "description", name: "description", content: "" },
{ name: "format-detection", content: "telephone=no" },
],
link: [{ rel: "icon", type: "image/x-icon", href: "/favicon.png" }],
},
// Global CSS: https://go.nuxtjs.dev/config-css
css: [
"~/assets/style/reset.less",
"~/assets/style/animate.css",
"vant/lib/index.css",
],
// Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins
plugins: [
{ src: "~/plugins/remJs.js", mode: "client" },
"@/plugins/vant",
"~/plugins/axios.js",
"~/plugins/vueTooltip.js",
// { src: '~/plugins/vueAnimate.js', mode: 'client' },
{ src: "~/plugins/vueClipboard.js", mode: "client" },
{ src: "~/plugins/lottieWeb.js", mode: "client" },
{ src: "~/plugins/svgIcon.js", mode: "client" },
{ src: "~/plugins/wow.js", mode: "client" },
{ src: "~/plugins/element.js", mode: "client" },
],
router: {
// base: '/assets/',
middleware: ["authenticated"],
},
// Auto import components: https://go.nuxtjs.dev/config-components
components: true,
// Modules for dev and build (recommended): https://go.nuxtjs.dev/config-modules
buildModules: [],
// Modules: https://go.nuxtjs.dev/config-modules
modules: [
[
"nuxt-svg-sprite-loader",
{
symbolId: "icon-[name]",
},
],
"@nuxtjs/axios",
],
// Build Configuration: https://go.nuxtjs.dev/config-build
build: {
transpile: ["vue-tooltip"],
extractCSS: {
// allChunks: true,
filename: "[name].css",
chunkFilename: "[id].css",
ignoreOrder: true,
},
babel: {
plugins: [
[
"component",
{
libraryName: "element-ui",
// 'style': false // 不引入对应的css文件
styleLibraryName: "theme-chalk",
},
],
],
},
extend(config, { isDev, isClient }) {
if (isClient) {
// 排除 nuxt 原配置的影响,Nuxt 默认有vue-loader,会处理svg,img等
// 找到匹配.svg的规则,然后将存放svg文件的目录排除
const svgRule = config.module.rules.find((rule) =>
rule.test.test(".svg")
);
svgRule.exclude = [resolve("assets/svg")];
// 添加loader规则
}
config.module.rules.push({
test: /\.(mpg|ts|pm4)$/i,
loader: "url-loader",
options: {
outputPath: "/static/video/",
publicPath: "/static/video/",
},
});
},
},
};