脚手架安装好nuxt的基本项目
npx create-nuxt-app <项目名>
,如:npx create-nuxt-app nuxt-ts
,按照提示安装你想要的东西,本次项目预装: Universal模式下koa+PWA+linter+prettier+axios ,默认的项目目录如下:
eslint + prettier + vscode 保存自动格式化&修复
本人习惯缩进为4个空格,但是eslint&nuxt生成的项目默认为2个,因此需要更改配置
.editorconfig
文件下的indent_size: 2
更改为indent_size: 4
.vscode/settings.json
{ // 保存时eslint自动修复错误 "eslint.autoFixOnSave": true, // 保存自动格式化 "editor.formatOnSave": true, // 开启 eslint 支持 "prettier.eslintIntegration": true, // prettier配置 --- 使用单引号【与.prettierrc下的配置对应】 "prettier.singleQuote": true, //prettier配置 --- 结尾不加分号 【与.prettierrc下的配置对应】 "prettier.semi": false, //prettier配置 --- 每行最多显示的字符数 【与.prettierrc下的配置对应】 "prettier.printWidth": 120, //.vue文件template格式化支持,并使用js-beautify-html插件 "vetur.format.defaultFormatter.html": "js-beautify-html", //js-beautify-html格式化配置,属性强制换行 "vetur.format.defaultFormatterOptions": { "js-beautify-html": { // "wrap_attributes": "force-aligned" } }, //根据文件后缀名定义vue文件类型 "files.associations": { "*.vue": "vue" }, //配置 ESLint 检查的文件类型 "eslint.validate": [ "javascript", "javascriptreact", { "language": "vue", "autoFix": true }, { "language": "typescript", "autoFix": true } ], "files.autoSave": "onFocusChange", "vetur.format.enable": false, "vetur.experimental.templateInterpolationService": true, "editor.detectIndentation": false }
.prettierrc
文件
{ "singleQuote": true, // 使用单引号 `.vscode/settings.json` 的`prettier.semi` "semi": false, // 结尾不加分号 `.vscode/settings.json` 的`prettier.semi` "printWidth": 120 // 此项为我自加以上两项为默认,表示每行最多显示的字符数,默认为80,本人觉得太短了,因此修改了一下,必须与`.vscode/settings.json` 的`prettier.printWidth`对应上 /* 更多配置请戳 https://prettier.io/docs/en/options.html */ }
.eslintrc.js
文件配置
module.exports = { root: true, env: { browser: true, node: true }, parserOptions: { parser: 'babel-eslint' }, extends: [ '@nuxtjs', 'plugin:nuxt/recommended', 'plugin:prettier/recommended', 'prettier', 'prettier/vue' ], plugins: ['prettier'], // add your custom rules here rules: { 'nuxt/no-cjs-in-config': 'off', indent: ['error', 4] // 4个空格缩进 /* 更多配置请戳 http://eslint.cn/docs/rules/ */ } }
nuxt.config.js
文件下 build.extend(config, ctx) {}
添加options.fix: true
build: { /* ** You can extend webpack config here */ extend(config, ctx) { // Run ESLint on save if (ctx.isDev && ctx.isClient) { config.module.rules.push({ enforce: 'pre', test: /\.(js|vue)$/, loader: 'eslint-loader', exclude: /(node_modules)/, options: { fix: true } }) } } }
开始改造工程支持typescript
安装所需插件
- npm i -D @nuxt/typescript ts-node @typescript-eslint/eslint-plugin
- npm install -S vue-class-component vue-property-decorator
修改&添加配置
package.json
添加或编辑package.json的lint脚本:
"lint": "eslint --ext .ts,.js,.vue --ignore-path .gitignore ."
修改package.json
的 dev
脚本中 server/index.js
为 server/index.ts
"dev": "cross-env NODE_ENV=development nodemon server/index.ts --watch server",
tsconfig.json
项目目录下新建tsconfig.json
文件后,在package.json文件下添加:
"start-dev": "nuxt"
脚本命令,运行npm run dev
就会使用默认值自动更新此配置文件
.eslintrc.js
修改.eslintrc.js
文件 parserOptions.parser: '@typescript-eslint/parser'
parserOptions: { parser: '@typescript-eslint/parser' },
修改.eslintrc.js
文件 plugins添加'@typescript-eslint'
plugins: ['prettier', '@typescript-eslint'],
nuxt.config.js
修改nuxt.config.js
文件后缀为 nuxt.config.ts
修改nuxt.config.ts
的build.extend
{ test: /\.ts$/, exclude: [/node_modules/, /vendor/, /\.nuxt/], loader: 'ts-loader', options: { appendTsSuffixTo: [/\.vue$/], transpileOnly: true } }
server/index.js
修改server/index.js
文件后缀为 server/index.ts
修改server/index.ts
中的
const config = require('../nuxt.config.js') // 为 const config = require('../nuxt.config.ts')
修改vue文件为typescript语法
<script> import Logo from '~/components/Logo.vue' export default { components: { Logo } } </script>
typescript 语法如下:
<script lang="ts"> import { Component, Vue } from 'vue-property-decorator' import Logo from '~/components/Logo.vue' @Component({ components: { Logo }, middleware: 'check-auth' }) export default class IndexPage extends Vue {} </script>
坑点
vetur 报错 Cannot find module 'xxxx'
解决方案:import 路径 需要写清楚后缀
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]