一、搭建(vue.js+webpack的项目)
1.vite
npm install -g @vue/cli
vue -V
vue create 项目名字
cd 项目名
npm install

2.webpack
npm install -g @vue/cli
vue -V
vue create vue_ts 项目名字
cd 项目名
npm install
选择 Manually select features; 接下来选择babel,typescript,router,vuex,CSS Pre-processors,Linter / Formattervue 
3.node-sass
npm install node-sass
二、环境配置
根目录下面新建如下文件 
本地
NODE_ENV = 'development'
VUE_APP_BASE_API = /api
VUE_APP_FLAG = 'development'
VUE_APP_API_URL = 'http://192.168.1.82:8080/'
测试
NODE_ENV = 'test'
VUE_APP_FLAG = 'test'
VUE_APP_BASE_API = /api
outputDir = test
VUE_APP_API_URL = '地址'
生产
NODE_ENV = 'production'
VUE_APP_FLAG = 'production'
VUE_APP_BASE_API = /api
outputDir = dist
VUE_APP_API_URL = '地址'
在public文件夹下面建一个config文件夹,再建一个index.ts文件,文件内容如下:
const envConfig = process.env;
let envName = null;
console.log(process.env);
switch (process.env.NODE_ENV) {
case 'development':
envName = '开发';
break;
case 'production':
envName = '生产';
break;
case 'test':
envName = '测试';
break;
}
export default { envConfig, envName };
mian.ts文件
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import envName from '../public/config';
console.log('pub', envName);
import "core-js/stable";
import "regenerator-runtime/runtime";
import AntDesign from '@/plugins/ant'
import swiper from '@/plugins/swiper'
createApp(App).use(store).use(router).use(AntDesign).use(swiper).mount('#app')
三、按需引入ant-design-vue
在src下建plugins文件夹,文件夹下新建ant.ts文件,文件内容如下
import { Dropdown,Menu, Carousel, Grid } from 'ant-design-vue'
import { SyncOutlined } from '@ant-design/icons-vue'
import { App } from 'vue'
const AntDesign = {
install: function (Vue: App) {
Vue.component('a-dropdown', Dropdown)
Vue.component('a-menu', Menu)
Vue.component('a-carousel', Carousel)
Vue.component('a-row', Grid)
Vue.component('a-col', Grid)
Vue.component('SyncOutlined', SyncOutlined)
}
}
export default AntDesign
四、.eslintrc.js
module.exports = {
root: true,
env: {
node: true
},
'extends': [
'plugin:vue/vue3-essential',
'eslint:recommended',
'@vue/typescript/recommended'
],
parserOptions: {
ecmaVersion: 2020
},
rules: {
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off'
}
}
五、babel.config.js
module.exports = {
presets: [
'@vue/cli-plugin-babel/preset'
]
}
六、vue.config.js
const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
transpileDependencies: true
})
module.exports = {
publicPath: process.env.NODE_ENV === 'production' ? './' : '/',
outputDir: 'dist',
assetsDir: 'static',
filenameHashing: true,
lintOnSave: false,
runtimeCompiler: false,
transpileDependencies: [],
productionSourceMap: false,
chainWebpack: (config) => {
config.resolve.symlinks(true)
config.optimization
.splitChunks({
cacheGroups: {}
});
config.module
.rule('eslint')
.exclude
.add('/Users/maybexia/Downloads/FE/community_built-in/src/lib')
.end()
},
css: {
sourceMap: false,
loaderOptions: {
sass: {
prependData: `@import "~@/variables.sass"`
},
scss: {
prependData: `@import "~@/variables.scss";`
},
}
},
devServer: {
open: true,
host: '127.0.0.1',
port: 3001,
hot: true,
compress: true,
proxy: {
[process.env.VUE_APP_BASE_API]: {
secure: false,
target: process.env.VUE_APP_API_URL,
changeOrigin: true,
ws: true,
pathRewrite: {
'^/api': ''
},
},
}
},
parallel: require('os').cpus().length > 1,
pwa: {},
pluginOptions: {}
};
七、router–index.ts
import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'
import HomeView from '../views/home/HomeView.vue'
const routes: Array<RouteRecordRaw> = [
{
path: '/',
name: 'home',
component: HomeView
},
{
path: '/about',
name: 'about',
component: () => import( '../views/AboutView.vue')
}
]
const router = createRouter({
history: createWebHistory(process.env.BASE_URL),
routes
})
export default router
|