vue中env文件的配置

  • vue项目中env文件的配置
  • 文件名:
  • 文件内容:
  • 关于文件的加载
  • process.env属性
  • 注意修改完要重新启动一遍项目
  • vue项目中 .eslintrc.js
  • vue项目中 .gitignore
  • vue 项目中 .eslintignore
  • vue 项目中.stylelintrc.js
  • vue 项目中 jsconfig.json
  • vue 项目中 .editorconfig


vue项目中env文件的配置

因项目中有使用到.env文件,所以记录一下用处,方便日后查看

文件名:

必须按如下方式命名,无需手动控制加载哪个文件

  • .env 全局默认配置文件,不论什么环境都会加载合并
  • .env.development 开发环境下的配置文件
  • .env.production 生产环境下的配置文件

文件内容:

NODE_ENV = 'development'

# just a flag
ENV = 'development'

# base api(使用mock.js时,切换dev-api)
# VUE_APP_BASE_API = '/dev-api'
VUE_APP_BASE_API = ''

# 常量
VUE_APP_SYSTEM_APPID = '98500000186000000'
VUE_APP_ONEID_HOME_PAGE = 'http://10.0.xx.xx'
VUE_APP_ONEID_OAUTH_URL = 'http://10.0.xx.xx/xxxxx/authorize'

# vue-cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable,
# to control whether the babel-plugin-dynamic-import-node plugin is enabled.
# It only does one thing by converting all import() to require().
# This configuration can significantly increase the speed of hot updates,
# when you have a large number of pages.
# Detail:  https://github.com/vuejs/vue-cli/blob/dev/packages/@vue/babel-preset-app/index.js

VUE_CLI_BABEL_TRANSPILE_MODULES = true
NODE_ENV = 'production'

# just a flag
ENV = 'production'

# base api
VUE_APP_BASE_API = ''

# 常量
VUE_APP_SYSTEM_APPID = '98500000186000000'
VUE_APP_ONEID_HOME_PAGE = 'https://yyy.xxx.com'
VUE_APP_ONEID_OAUTH_URL = 'https://yyy.xxx.com/oauth/index'

关于文件的加载

根据启动命令vue会自动加载对应的环境,vue是根据文件名进行加载的,所以上面说无需专门控制加载哪个文件

比如执行npm run serve/dev 命令,会自动加载 .env.development 文件

process.env属性

process.env属性:全局属性,任何地方均可使用;

可以打印看下输出:

vue rem 配置_vue

可见NODE_ENV被改为了development,覆盖掉了.env中的全局属性

注意修改完要重新启动一遍项目

vue项目中 .eslintrc.js

js代码的语法检查

代码提示出现很多奇奇怪怪的错误提示,因为是eslintrc.js文件没有配置相关命令

默认eslint规则:

  • 代码末尾不能加分号 ;
  • 代码中不能存在多行空行;
  • tab键不能使用,必须换成两个空格;
  • 代码中不能存在声明了但未使用的变量;

最简单的方法,关闭eslint检测,把 build/webpack.base.conf.js 配置文件中的eslint rules注释掉即可。但不推荐这么做,eslint检测是有必要的,能保持良好的代码风格。

第二种方法就是把不符合自己习惯的规则去掉,如下:

module.exports = {
  // 解析:用来告诉eslint找当前配置文件不能往父级查找
  root: true,
  // 解析: 用来指定eslint解析器的,解析器必须符合规则
  // babel-eslint解析器是对babel解析器的包装使其与ESLint解析
  parserOptions: {
    parser: 'babel-eslint',
    sourceType: 'module'
  },
  // 解析: 用来指定环境的全局变量,下面的配置指定为browser node es6环境
  env: {
    browser: true,
    node: true,
    es6: true,
  },
  // 解析: 用来配置vue.js风格
  extends: ['plugin:vue/recommended', 'eslint:recommended'],
  
  // add your custom rules here
  //it is base on https://github.com/vuejs/eslint-config-vue
  /*
  * "规则名": [规则值, 规则配置]
  * "off" 或者 0    //关闭规则关闭
  * "warn" 或者 1    //在打开的规则作为警告(不影响退出代码)
  * "error" 或者 2    //把规则作为一个错误(退出代码触发时为1)
  * */
  rules: {
    "vue/max-attributes-per-line": [2, {
      "singleline": 10,
      "multiline": {
        "max": 1,
        "allowFirstLine": false
      }
    }],
    "vue/singleline-html-element-content-newline": "off",
    "vue/multiline-html-element-content-newline":"off",
    "vue/name-property-casing": ["error", "PascalCase"],
    "vue/no-v-html": "off",
    'accessor-pairs': 2,
    'arrow-spacing': [2, {
      'before': true,
      'after': true
    }],
    // 解析: 禁止或强制在单行代码块中使用空格(禁用)
    'block-spacing': [2, 'always'],
    // 解析: 强制使用一致的缩进 第二个参数为 "tab" 时,会使用tab,
    // if while function 后面的{必须与if在同一行,java风格。
    'brace-style': [2, '1tbs', {
      'allowSingleLine': true
    }],
    // 解析:  双峰驼命名格式
    'camelcase': [0, {
      'properties': 'always'
    }],
    // 解析: 数组和对象键值对最后一个逗号
    // never参数:不能带末尾的逗号, always参数:必须带末尾的逗号,
    // always-multiline:多行模式必须带逗号,单行模式不能带逗号
    'comma-dangle': [2, 'never'],
    // 控制逗号前后的空格
    'comma-spacing': [2, {
      'before': false,
      'after': true
    }],
    // 控制逗号在行尾出现还是在行首出现 (默认行尾)
    'comma-style': [2, 'last'],
    // 强制在子类构造函数中用super()调用父类构造函数,TypeScrip的编译器也会提示
    'constructor-super': 2,
    // 强制所有控制语句使用一致的括号风格
    'curly': [2, 'multi-line'],
    // object, '.' 号应与对象名在同一行
    'dot-location': [2, 'property'],
    // 文件末尾强制换行
    'eol-last': 2,
    // 使用 === 替代 == allow-null允许null和undefined==
    'eqeqeq': ["error", "always", {"null": "ignore"}],
    'generator-star-spacing': [2, {
      'before': true,
      'after': true
    }],
    'handle-callback-err': [2, '^(err|error)$'],
    'indent': [2, 2, {
      'SwitchCase': 1
    }],
    'jsx-quotes': [2, 'prefer-single'],
    'key-spacing': [2, {
      'beforeColon': false,
      'afterColon': true
    }],
    'keyword-spacing': [2, {
      'before': true,
      'after': true
    }],
    'new-cap': [2, {
      'newIsCap': true,
      'capIsNew': false
    }],
    'new-parens': 2,
    'no-array-constructor': 2,
    'no-caller': 2,
    'no-console': 'off',
    'no-class-assign': 2,
    'no-cond-assign': 2,
    'no-const-assign': 2,
    'no-control-regex': 0,
    'no-delete-var': 2,
    'no-dupe-args': 2,
    'no-dupe-class-members': 2,
    'no-dupe-keys': 2,
    'no-duplicate-case': 2,
    'no-empty-character-class': 2,
    'no-empty-pattern': 2,
    'no-eval': 2,
    'no-ex-assign': 2,
    'no-extend-native': 2,
    'no-extra-bind': 2,
    'no-extra-boolean-cast': 2,
    'no-extra-parens': [2, 'functions'],
    'no-fallthrough': 2,
    'no-floating-decimal': 2,
    'no-func-assign': 2,
    'no-implied-eval': 2,
    'no-inner-declarations': [2, 'functions'],
    'no-invalid-regexp': 2,
    'no-irregular-whitespace': 2,
    'no-iterator': 2,
    'no-label-var': 2,
    'no-labels': [2, {
      'allowLoop': false,
      'allowSwitch': false
    }],
    'no-lone-blocks': 2,
    'no-mixed-spaces-and-tabs': 2,
    'no-multi-spaces': 2,
    'no-multi-str': 2,
    'no-multiple-empty-lines': [2, {
      'max': 1
    }],
    'no-native-reassign': 2,
    'no-negated-in-lhs': 2,
    'no-new-object': 2,
    'no-new-require': 2,
    'no-new-symbol': 2,
    'no-new-wrappers': 2,
    'no-obj-calls': 2,
    'no-octal': 2,
    'no-octal-escape': 2,
    'no-path-concat': 2,
    'no-proto': 2,
    'no-redeclare': 2,
    'no-regex-spaces': 2,
    'no-return-assign': [2, 'except-parens'],
    'no-self-assign': 2,
    'no-self-compare': 2,
    'no-sequences': 2,
    'no-shadow-restricted-names': 2,
    'no-spaced-func': 2,
    'no-sparse-arrays': 2,
    'no-this-before-super': 2,
    'no-throw-literal': 0,
    'no-trailing-spaces': 2,
    'no-undef': 2,
    'no-undef-init': 2,
    'no-unexpected-multiline': 2,
    'no-unmodified-loop-condition': 2,
    'no-unneeded-ternary': [2, {
      'defaultAssignment': false
    }],
    'no-unreachable': 2,
    'no-unsafe-finally': 2,
    'no-unused-vars': [2, {
      'vars': 'all',
      'args': 'none'
    }],
    'no-useless-call': 2,
    'no-useless-computed-key': 2,
    'no-useless-constructor': 2,
    'no-useless-escape': 0,
    'no-whitespace-before-property': 2,
    'no-with': 2,
    'one-var': [2, {
      'initialized': 'never'
    }],
    'operator-linebreak': [2, 'after', {
      'overrides': {
        '?': 'before',
        ':': 'before'
      }
    }],
    'padded-blocks': [2, 'never'],
    'quotes': [2, 'single', {
      'avoidEscape': true,
      'allowTemplateLiterals': true
    }],
    // 要求或禁止使用分号而不是 ASI(这个才是控制行尾部分号的,)
    'semi': [1, 'always'],
    // 强制分号之前和之后使用一致的空格
    'semi-spacing': [2, {
      'before': false,
      'after': true
    }],
    'space-before-blocks': [2, 'always'],
    'space-before-function-paren': [2, 'never'],
    'space-in-parens': [2, 'never'],
    'space-infix-ops': 2,
    'space-unary-ops': [2, {
      'words': true,
      'nonwords': false
    }],
    'spaced-comment': [2, 'always', {
      'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ',']
    }],
    'template-curly-spacing': [2, 'never'],
    'use-isnan': 2,
    'valid-typeof': 2,
    'wrap-iife': [2, 'any'],
    'yield-star-spacing': [2, 'both'],
    'yoda': [2, 'never'],
    'prefer-const': 2,
    'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
    'object-curly-spacing': [2, 'always', {
      objectsInObjects: false
    }],
    'array-bracket-spacing': [2, 'never']
  }
}

具体可看eslintrc的rules配置规则

vue项目中 .gitignore

.gitignore 文件的作用就是告诉git,push的时候忽略指定的文件夹或者文件;

例如:vue-cli脚手架创建的项目,push到github上时,不会上传node依赖文件夹,这是因为vue-cli脚手架创建的时候,自动为我们创建了 .gitignroe文件,并且为我们写好了规则。

注意:

.gitignore和.git文件夹是同一目录;
一定要push之前创建.gitignore文件,push之后创建.gitignore不用被git使用,因为git已经开始了版本控制。

.gitignore文件用于忽略文件,其规范如下:

  • 1.所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
  • 2.可以使用标准的 glob 模式匹配。
  • 3.匹配模式最后跟反斜杠(/)说明要忽略的是目录。
  • 4.要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。
.DS_Store
node_modules/
dist/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
**/*.log

tests/**/coverage/
tests/e2e/reports
selenium-debug.log

# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.local

package-lock.json
yarn.lock

vue 项目中 .eslintignore

主要作用是忽略哪些文件的语法检查

build/.js    //表示忽略build目录下类型为js的文件的语法检查
config/.js   //表示忽略config目录下类型为js的文件语法检查

// 等等如下
build/*.js
src/assets
public
dist

vue 项目中.stylelintrc.js

css代码的语法检查 ,很少用到

vue 项目中 jsconfig.json

具体可看 jsconfig.json解析

vue 项目中 .editorconfig

注意:

vscode 安装依赖插件 EditorConfig for VS Code .editorconfig才会起作用。

vue rem 配置_javascript_02

# https://editorconfig.org
# 告诉EditorConfig插件,这是根文件,不用继续往上查找
root = true
# 匹配全部文件
[*]
# 设置字符集
charset = utf-8
# 缩进风格,可选"space"、"tab"
indent_style = tab
# 缩进的空格数
indent_size = 2
# 结尾换行符,可选"lf"、"cr"、"crlf"
end_of_line = lf
# 在文件结尾插入新行
insert_final_newline = true
# 删除一行中的前后空格
trim_trailing_whitespace = true

还有其他的就不一一解释了,可自行百度

vue rem 配置_ci_03