虽然vue-cli 4.x都快release了,但是该整理还是要整理……
需求项目标配:
- vue-router
- sass/scss
- 打包地址配置
- proxy table
- 正式环境关闭source map
- 支持全局引用scss(可以全局mixin)
环境声明:
- 官方文档:https://cli.vuejs.org/zh/guide/installation.html
简略版:
如果想要使用vue-cli 3.x,那么
安装(全局):
npm install -g @vue/cli# ORyarn global add @vue/cli
卸载(全局):
npm uninstall vue-cli -g# ORyarn global remove vue-cli
如果想要使用vue-cli 1.x或者2.x,要使用vue-cli这个包名进行下载
- 本文环境:
@vue/cli 3.11.0
初始化项目
基础项目
vue create vue-cli-demo
- 如果需要手动配置,则根据https://cli.vuejs.org/zh/guide/creating-a-project.html#vue-create 自行观看;这里使用默认配置(选择default),eslint+babel
添加vue-router
- 截止至19.12.05,还不支持通过
vue add vue-router的方式导入vue-router,所以我们走原始的。 - vue-cli 3.x项目默认使用yarn,所以后续安装也都使用yarn来进行。
# download vue-routeryarn add vue-router
<!-- App.vue --><!-- 动态加载页面 --><template><div id="app"><router-view/></div></template>
- 新建文件夹router以及内部文件main.js,使结构为:
.├── App.vue├── assets│ └── logo.png├── components│ └── HelloWorld.vue├── main.js└── router└── index.js
// @/router/index.jsimport Vue from 'vue'import Router from 'vue-router'Vue.use(Router)// 项目惯用的懒加载const myComponents = {HelloWorld: r => require.ensure([], () => r(require('@/components/HelloWorld')), 'com-hello-world')}export default new Router({routes: [{path: '/hello',name: 'HelloWorld',component: myComponents.HelloWorld,beforeEnter: function (to, from, next) {document.title = 'vue project'next()}},{path: '/*',redirect: '/hello'}]})
import Vue from 'vue'import router from './router'import App from './App.vue'Vue.config.productionTip = falsenew Vue({router,render: h => h(App),}).$mount('#app')
- 现在打开链接,就能通过
/#/hello的哈希路由访问到了。 - 后续如果需要增加页面,继续增加对应的组件即可。
添加sass/scss
yarn add sass-loader# Andyarn add node-sass
打包地址配置+关闭正式环境source map
新建vue.config.js在项目根目录,内容如:
// vue.config.jsmodule.exports = {publicPath: '',outputDir: 'dist', // 绝对路径的输出路径,打包的地址在这里assetsDir: 'static',lintOnSave: process.env.NODE_ENV === 'development', // Eslint只在开发环境有效productionSourceMap: false, // 关闭正式环境的source mapdevServer: {proxy: '' // proxy可以是一个字符串(目标地址),也可以是一个对象{'/foo': {target: '<other_url>'}}}}
支持全局引用scss(可以全局mixin)
// vue.config.jsmodule.export = {// 加项css: {loaderOptions: {scss: {prependData: `@import '~@/assets/css/index.scss';`}}}}
