最近因工作需要,使用nuxt开发了一套移动端H5页面。其中nuxt的配置过程中遇到了许多坑,今天项目提测。在这里记录下相关配置

nuxt.config.js相关配置

const WebpackAliyunOss = require('webpack-aliyun-oss')

const oss = require('./oss.js')

const API_ENV = process.env.API_ENV // 这里是我代码调动接口的全局参数 比如 qa、qa2、dev

const ossPath = '//我的oss地址'

const projectPublicPath = `${ossPath}/${API_ENV}/`

const distPath = `wangxiao/${API_ENV}/` // oss地址下的文件目录

module.exports = {

mode: 'universal', // 使用本地静态化部署。

/*

**这里是定义一些全局的webpack变量。使用cross-env传入的参数 需要在此处定义 才能可以在代码中取到。

*/

env: {

NODE_ENV: process.env.NODE_ENV || 'development',

API_ENV: process.env.API_ENV

},

/*

** 页面的头部信息包括 meta、link、script等

*/

head: {

title: '我的title',

meta: [

{ charset: 'utf-8' },

{ name: 'viewport', content: 'width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=0' },

{ hid: 'description', name: 'description', content: process.env.npm_package_description || '' },

{

hid: 'keywords',

name: 'keywords',

content:

'我的content'

}

],

link: [

{ rel: 'icon', type: 'image/x-icon', href: './favicon.ico' } // 默认路径为/favicon.ico 如果不是在根目录下部署。将此处路径改为.favicon.ico即可

]

},

/*

** 自定义progress-bar的颜色

*/

loading: { color: '#F77702' },

/*

** 需要全局引入的css样式

*/

css: [

{ src: 'vant/lib/index.css' },

'@/assets/default.less'

],

/*

** 需要全局引用的js插件等,ssr:true则服务端渲染是返回

*/

plugins: [

{ src: '@/plugins/vant', ssr: true },

{ src: '@/plugins/rem', ssr: false },

{ src: '@/plugins/api', ssr: false },

{ src: '@/plugins/cookie', ssr: false },

{ src: '@/plugins/router', ssr: false }

// { src: '@/plugins/vconsole', ssr: false }

],

/*

** Nuxt.js dev-modules dev 开发时的一些eslint stylelint 校验

*/

buildModules: [

// Doc: https://github.com/nuxt-community/eslint-module

// '@nuxtjs/eslint-module',

// Doc: https://github.com/nuxt-community/stylelint-module

// '@nuxtjs/stylelint-module'

],

/*

** 路由相关配置

*/

router: {

base: process.env.NODE_ENV !== 'development' ? '/discountActivity/' : '/',

// 为项目增加默认路由。若找不到路由则跳转此页面

extendRoutes (routes, resolve) {

routes.push({

name: 'default',

path: '*',

component: resolve(__dirname, 'pages/index.vue')

})

}

},

// 配置url-loader: 图片大小小于10000的将被转为base64

loaders: {

imgUrl: { limit: 10000 }

},

/*

** Nuxt.js modules

*/

modules: [

// Doc: https://axios.nuxtjs.org/usage

// '@nuxtjs/axios'

],

/*

** Axios module configuration

** See https://axios.nuxtjs.org/options

*/

axios: {

},

/*

** 默认dev启动的本地服务相关配置

*/

server: {

port: 3001, // default: 3000

host: '0.0.0.0' // default: localhost

},

/*

** Build configuration

*/

build: {

// analyze: true,

extractCSS: process.env.NODE_ENV !== 'development', // 是否将css 提取到单独文件

/*

** You can extend webpack config here

** webpack 相关配置。 文件打包名称配置

*/

filenames: {

app: ({ isDev }) => (isDev ? '[name].js' : 'js/[id].[chunkhash].js'),

chunk: ({ isDev }) => (isDev ? '[name].js' : 'js/[id].[chunkhash].js'),

css: ({ isDev }) => (isDev ? '[name].css' : 'css/[id].[contenthash].css'),

img: ({ isDev }) =>

isDev ? '[path][name].[ext]' : 'img/[name].[hash:10].[ext]',

font: ({ isDev }) =>

isDev ? '[path][name].[ext]' : 'fonts/[hash:7].[ext]',

video: ({ isDev }) =>

isDev ? '[path][name].[ext]' : 'videos/[hash:7].[ext]'

},

// babel 相关配置

babel: {

presets ({ isServer }) {

const targets = isServer ? { node: '10' } : { browsers: '> 5%' }

return [

[require.resolve('@nuxt/babel-preset-app'), { targets }]

]

},

plugins: API_ENV === 'production' ? ['transform-remove-console'] : []

},

// 静态文件 地址配置

publicPath: projectPublicPath,

extend (config, ctx) {

const { isDev, isClient } = ctx

if (isDev && isClient) {

// 本地调试使用eslint

config.module.rules.push(

{

enforce: 'pre',

test: /\.(js|vue)$/,

loader: 'eslint-loader',

exclude: [/(node_modules)/, /(assets)/]

}

)

}

// 如果不是 开发模式切为客户端代码, npm run generate 时 静态文件上传阿里云oss

if (isClient && !isDev) {

config.plugins = config.plugins.concat([

new WebpackAliyunOss({

from: ['./.nuxt/dist/client/**'],

dist: distPath,

region: oss.region,

accessKeyId: oss.accessKeyId,

accessKeySecret: oss.accessKeySecret,

bucket: oss.bucket

})

])

}

},

// 设置 px2rem 需要结合 plugins 中js 根据页面视口宽度动态设置根节点字体大小

postcss: {

plugins: {

'postcss-pxtorem': {

replace: true,

rootValue: 37.5,

propList: ['*']

}

},

autoprefixer: {

browsers: ['Android >= 4.0', 'iOS >= 8']

}

}

}

}

oss.js 相关配置

module.exports = {

region: '***',

accessKeyId: '***',

accessKeySecret: '****************',

bucket: '******'

}

动态设置根节点字体大小js 和 禁止微信浏览器更改字体大小

/* eslint-disable no-undef */

// 设置 rem 函数

function setRem () {

const htmlWidth = document.body.clientWidth

// 得到html的Dom元素

const htmlDom = document.getElementsByTagName('html')[0]

const bodyDom = document.getElementsByTagName('body')[0]

// 设置根元素字体大小

htmlDom.style.fontSize = htmlWidth / 10 + 'px'

bodyDom.style.maxWidth = '750px'

bodyDom.style.visibility = 'visible' // 默认 body 为hidden 当计算完成font-size后再显示。解决页面重新计算时页面混乱的bug。

}

// 初始化

setRem()

// 改变窗口大小时重新设置 rem

window.onresize = function () {

setRem()

}

// 禁止微信浏览器更改字体大小

if (typeof WeixinJSBridge === 'object' && typeof WeixinJSBridge.invoke === 'function') {

handleFontSize()

} else if (document.addEventListener) {

document.addEventListener('WeixinJSBridgeReady', handleFontSize, false)

} else if (document.attachEvent) {

document.attachEvent('WeixinJSBridgeReady', handleFontSize)

document.attachEvent('onWeixinJSBridgeReady', handleFontSize)

}

function handleFontSize () {

// 设置网页字体为默认大小

WeixinJSBridge.invoke('setFontSizeCallback', { fontSize: 0 })

// 重写设置网页字体大小的事件

WeixinJSBridge.on('menu:setfont', function () {

WeixinJSBridge.invoke('setFontSizeCallback', { fontSize: 0 })

})

}

全局安装nuxt_nuxt配置相关推荐

  1. Python的全局安装源配置

    Python的全局安装源配置 配置Python的全局安装源的作用: 在开发的过程中我们需要安装很多的模块或者库用以辅助我们的开发,而配置安装源可以在我们安装新的模块或者库的时候下载更快. 配置Pyth ...

  2. 全局安装nuxt_Nuxt项目搭建到Nuxt项目部署

    a.为什么? Vue.js原来是开发SPA(单页应用)的,但很多人想用Vue开发多页应用(有利于SEO操作),并在服务端完成渲染,于是Nuxt.js框架出生了,可实现用命令把vue项目生成为静态htm ...

  3. NodeJS——模块全局安装路径配置以及关于supervisor的问题解释

    下载安装NodeJS后,在自己选择的路径下会有如下的文件: 默认情况下NodeJS安装会同时安装npm(模块管理器:用于管理用户require的模块,有全局和本地两种). 注:全局:执行npm  in ...

  4. 全局安装nuxt_Nuxt爬坑

    nuxt.js简单的说是Vue.js的通用框架,最常用的就是用来作SSR(服务器端渲染).Vue.js是开发SPA(单页应用)的,Nuxt.js这个框架,用Vue开发多页应用,并在服务端完成渲染,可以 ...

  5. 全局安装nuxt_Nuxt · Issue #30 · zhh10/Notes · GitHub

    13. 全局方法.过滤.指令.组件.样式 全局方法 nuxt.config.js plugins:['~/plugins/mixins'] plugins/mixins import Vue from ...

  6. node全局安装插件,找不到无法识别,set prefix和cache,修改系统环境后,安装插件报错 4048

    问题描述: npm全局安装插件后,系统找不到该插件,之后,我把默认全局安装路径配置做了修改,修改到了nodejs当中的node_global文件的路径(没有的话自己新建一个),npm config s ...

  7. Npm配置全局安装插件目录以及命令用法扩展

    1 配置全局插件文件存放目录 说明:本地nodejs安装路径为:D:\Software\Nodejs 先在安装目录创建2个空的文件夹 cd /d D:\Software\Nodejs mkdir no ...

  8. npm全局环境变量配置,全局配置cnpm

    今天新电脑想安装node.js , 发现最新版本的node.js已经不支持win7了,但是又不想换系统,所以找了个旧版本,这里不多说了.如果找不到旧版本的node下载,可以去我的QQ交流群文件里面下载 ...

  9. nodejs安装及npm模块插件安装路径配置

    在学习完js后,我们就要进入nodejs的学习,因此就必须配置nodejs和npm的属性了. 我相信,个别人在安装时会遇到这样那样的问题,看着同学都已装好,难免会焦虑起来.于是就开始上网查找解决方案, ...

最新文章

  1. DM642图像平移程序学习
  2. Xamarin Essentials教程剪贴板Clipboard
  3. Linux_NIS+NFS+Autofs
  4. 设置 页面 内容并排平均显示
  5. Hmac - Java加密与安全
  6. spring boot示例_Spring Boot上的Spring社交示例,或者我如何停止担心和喜欢自动配置...
  7. python编程从入门到实践pdf_Python编程入门研读笔记(二)
  8. 水刀切割设备行业调研报告 - 市场现状分析与发展前景预测
  9. Java appium iOS_Appium+iOS环境搭建
  10. 市场上最受欢迎的十大服装进销存软件
  11. matlab中eval函数保存图片,Matlab中eval函数的使用方法。
  12. 如何在Mac上裁剪图片
  13. IDEA - 官方定制主题,Dark Purple theme,Cyan Light Theme,Gray Theme
  14. AJAX处理返回的XML字符串
  15. 微信小程序开发笔记(二)
  16. 分别统计其中数字、英文字母和其它字符的个数
  17. L1-058 6翻了 (15 分)
  18. Codeforces 1247D. Power Products (logn质因数分解)
  19. 什么软件可以测试自己的穿衣,心理测试:4个女孩,哪个穿衣风格跟你最像?秒测你的真实性格...
  20. IDEA中对Git的常规操作(合并,提交,新建分支,更新)

热门文章

  1. 文件名中src和trg到底是什么意思?
  2. STM32F103VET6工控板
  3. 【路径规划】基于麻雀算法求解栅格地图路径规划及避障含Matlab源码
  4. 计算机网络-物理层、MAC层
  5. 利用Kali进行WiFi钓鱼测试实战
  6. OperationalError: FATAL: Ident authentication failed for user “postgres”
  7. 农民工的下一个出路在哪里?
  8. (CondConv)条件卷积insight分析
  9. ROS添加自定义消息
  10. nginx 源码学习笔记(二)——nginx精粹-模块