真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Nuxt項(xiàng)目怎么支持eslint+pritter+typescript

這篇文章將為大家詳細(xì)講解有關(guān)Nuxt項(xiàng)目怎么支持eslint+pritter+typescript,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

專注于為中小企業(yè)提供成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)鷹潭免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上1000+企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

腳手架安裝好nuxt的基本項(xiàng)目

npx create-nuxt-app <項(xiàng)目名>,如:npx create-nuxt-app nuxt-ts,按照提示安裝你想要的東西,本次項(xiàng)目預(yù)裝: Universal模式下koa+PWA+linter+prettier+axios ,默認(rèn)的項(xiàng)目目錄如下:

Nuxt項(xiàng)目怎么支持eslint+pritter+typescript

eslint + prettier + vscode 保存自動(dòng)格式化&修復(fù)

本人習(xí)慣縮進(jìn)為4個(gè)空格,但是eslint&nuxt生成的項(xiàng)目默認(rèn)為2個(gè),因此需要更改配置

  • .editorconfig文件下的indent_size: 2更改為indent_size: 4

  • .vscode/settings.json

{
 // 保存時(shí)eslint自動(dòng)修復(fù)錯(cuò)誤
 "eslint.autoFixOnSave": true,
 // 保存自動(dòng)格式化
 "editor.formatOnSave": true,
 // 開(kāi)啟 eslint 支持
 "prettier.eslintIntegration": true,
 // prettier配置 --- 使用單引號(hào)【與.prettierrc下的配置對(duì)應(yīng)】
 "prettier.singleQuote": true,
 //prettier配置 --- 結(jié)尾不加分號(hào) 【與.prettierrc下的配置對(duì)應(yīng)】
 "prettier.semi": false,
 //prettier配置 --- 每行最多顯示的字符數(shù) 【與.prettierrc下的配置對(duì)應(yīng)】
 "prettier.printWidth": 120,
 //.vue文件template格式化支持,并使用js-beautify-html插件
 "vetur.format.defaultFormatter.html": "js-beautify-html",
 //js-beautify-html格式化配置,屬性強(qiáng)制換行
 "vetur.format.defaultFormatterOptions": {
  "js-beautify-html": {
   // "wrap_attributes": "force-aligned"
  }
 },
 //根據(jù)文件后綴名定義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, // 使用單引號(hào) `.vscode/settings.json` 的`prettier.semi`
 "semi": false, // 結(jié)尾不加分號(hào) `.vscode/settings.json` 的`prettier.semi`
 "printWidth": 120 // 此項(xiàng)為我自加以上兩項(xiàng)為默認(rèn),表示每行最多顯示的字符數(shù),默認(rèn)為80,本人覺(jué)得太短了,因此修改了一下,必須與`.vscode/settings.json` 的`prettier.printWidth`對(duì)應(yīng)上
/* 更多配置請(qǐng)戳 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個(gè)空格縮進(jìn)
  /* 更多配置請(qǐng)戳 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
     }
    })
   }
  }
 }

開(kāi)始改造工程支持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.jsondev 腳本中 server/index.jsserver/index.ts

"dev": "cross-env NODE_ENV=development nodemon server/index.ts --watch server",

tsconfig.json

項(xiàng)目目錄下新建tsconfig.json文件后,在package.json文件下添加:
"start-dev": "nuxt" 腳本命令,運(yùn)行npm run dev就會(huì)使用默認(rèn)值自動(dòng)更新此配置文件

.eslintrc.js

修改.eslintrc.js文件 parserOptions.parser: '@typescript-eslint/parser'

parserOptions: {
 parser: '@typescript-eslint/parser'
},

修改.eslintrc.js文件 plugins添加'@typescript-eslint'

plugins: ['prettier', '@typescript-eslint'],

Nuxt項(xiàng)目怎么支持eslint+pritter+typescript

nuxt.config.js

修改nuxt.config.js文件后綴為 nuxt.config.ts

修改nuxt.config.tsbuild.extend

{
 test: /\.ts$/,
 exclude: [/node_modules/, /vendor/, /\.nuxt/],
 loader: 'ts-loader',
 options: {
  appendTsSuffixTo: [/\.vue$/],
  transpileOnly: true
 }
}

Nuxt項(xiàng)目怎么支持eslint+pritter+typescript

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語(yǔ)法

typescript 語(yǔ)法如下:


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 {}

坑點(diǎn)

vetur 報(bào)錯(cuò) Cannot find module 'xxxx'

解決方案:import 路徑 需要寫清楚后綴

Nuxt項(xiàng)目怎么支持eslint+pritter+typescript

關(guān)于“Nuxt項(xiàng)目怎么支持eslint+pritter+typescript”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。


網(wǎng)頁(yè)標(biāo)題:Nuxt項(xiàng)目怎么支持eslint+pritter+typescript
轉(zhuǎn)載來(lái)源:http://weahome.cn/article/jddppj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部