@vue/cli  是一个基于 Vue.js 进行快速开发的完整系统。

@vue/cli   基于node服务  需要8.9以上版本 可以使用 nvm等工具来控制node版本  构建于 webpack 和 webpack-dev-server 之上

安装  

如果已安装旧版 需要先卸载旧版本 :

 npm uninstall vue-cli -g 
//or
yarn global remove vue-cli

任一命令安装全局新包:

  npm install -g @vue/cli
//or
yarn global add @vue/cli
//or
cnpm global add @vue/cli

查看版本:

vue --version
//or
vue -V

创建项目:

vue create  my-project # 项目名
# Windows 上通过 minTTY 使用 Git Bash,交互提示符并不工作。
# 你必须通过 winpty vue.cmd create hello-world 启动这个命令。 # or
npx @vue/cli create appname

创建时会提示  preset 预置项

可以选择默认配置

也可以选择手动配置

Please pick a preset:
> vue-router base (vue-router, vuex, less, babel, pwa, unit-mocha) //配置过的预置项(preset)
default (babel, eslint) Manually select features //默认的preset
Manually select features //手动配置需要的preset

在操作提示的最后你可以选择将已选项保存为一个将来可复用的 preset。

同时 现在可以可视化创建项目:

vue ui

命令会打开一个浏览器窗口,并以图形化界面将你引导至项目创建的流程。

webpack 配置

在项目根目录手动创建 vue.config.js

导出一个对象 :

module.exports = {

}

有些webpack 选项不能直接修改

比如 应该修改 vue.config.js 中的 outputDir 而不是修改 webpack 中的 output.path

基于环境有条件地配置行为,或者想要直接修改配置:

baseUrl 从Vue CLI 3.3 起已弃用,请使用publicPath

const path = require('path')
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
const ProxyAgent = require('proxy-agent')
const resolve = dir => path.resolve(__dirname, dir)
module.exports = {
outputDir: process.env.outputDir || 'dist', // 'dist', 生产环境构建文件的目录
runtimeCompiler: true,
assetsDir: 'static',
productionSourceMap: false, // 生产环境的 source map
parallel: require('os').cpus().length > 1,
configureWebpack: config => {
// 公共配置
// cdn引用时配置externals 防止将某些 import 的包(package)打包到 bundle 中,而是在运行时(runtime)再去从外部获取这些扩展依赖
config.externals = {
'vue': 'Vue',
'vue-router': 'VueRouter',
'element-ui': 'ELEMENT',
'vuex': 'Vuex',
'axios': 'axios'
}
config.resolve.alias = Object.assign({}, config.resolve.alias, {
'src': resolve('src/common'),
'common': resolve('src/views/common'),
'static': resolve('static')
})
if (process.env.NODE_ENV === 'production') {
// 为生产环境修改配置...
config.optimization = {
minimizer: [
new UglifyJsPlugin({
uglifyOptions: {
compress: {
drop_console: true, // console
drop_debugger: false,
pure_funcs: ['console.log']// 移除console
}
}
})
]
}
} else {
// 为开发环境修改配置...
}
},
css: {
loaderOptions: {
css: {
importLoaders: 1 // @import 引入的文件可被一个loader处理 (2 可被两个loader处理)
}
}
},
devServer: {
port: 80,
disableHostCheck: true, // 可使用本地host配置的域名访问
proxy: {
'/api': {
agent: new ProxyAgent('http://132.128.11.12'),
target: 'http://132.128.11.12',
ws: false,
changeOrigin: true
}
} }
}

链式操作

@vue/cli  内部的webpack 配置是通过 webpack-chain 维护的。

配置选项:

module.exports = {
baseUrl: '/',
outputDir: 'dist', //打包输出目录默认dist
// assetsDir: 'bbbbb', //放置生成的静态资源 默认 ''
chainWebpack: config => { //会接收一个基于 webpack-chain 的 ChainableConfig 实例。允许对内部的 webpack 配置进行更细粒度的修改。
config.resolve.alias.set('~',path.join(__dirname, '..','src/assets'))
      },

}

更多细节可查阅 vue.config.js 

Owen 的个人博客

@vue/cli 3.x项目脚手架 webpack 配置的更多相关文章

  1. vue cli创建typescript项目

    使用最新的Vue CLI @vue/cli创建typescript项目,使用vue -V查看当前的vue cli版本 安装命令 npm install -g @vue-cli 创建项目 vue cre ...

  2. vue全家桶安装以及修改webpack配置新增vue项目启动方式

    一.安装node环境(自带npm) 下载地址 二.替换下载源 // 淘宝 NPM 镜像 npm install -g cnpm --registry=https://registry.npm.taob ...

  3. axios踩坑记录+拦截器使用+vue cli代理跨域proxy+webpack打包部署到服务器

    1.小小的提一下vue cli脚手架前端调后端数据接口时候的本地代理跨域问题,如我在本地localhost访问接口http://40.00.100.100:3002/是要跨域的,相当于浏览器设置了一道 ...

  4. 基于@vue/cli 的构建项目(3.0)

    1.检测node的版本号 注意:1.Vue CLI需要Node.js的版本 8.9+(推荐8.11.0+) 所以在安装Vue CLI之前先看下node的版本 node -v 2.安装@vue/cli ...

  5. vue cli 3.x 项目部署到 github pages

    github pages 是 github 免费为用户提供的服务,写博客,或者部署一些纯静态项目. 最近将 vue cli 3.x 初始化项目部署到 github pages,踩了一些坑,记录如下. ...

  6. vue爬坑之路(webpack 配置篇)

    在vue cli下 1.npm run dev 打开浏览器在config的index.js中修改autoOpenBrowser为true 关闭sourcemap productionSourceMap ...

  7. vue项目实战, webpack 配置流程记录

    vue项目实战记录,地址在这 购物车单界面 npm install npm run dev 跑起来可以看到界面效果 这里简单记录一下webpack的编译流程 入口 package.json " ...

  8. @vue/cli 构建得项目eslint配置

    如下:package.json // package.json { "name": "ecommerce-mall-front", "version& ...

  9. @vue/cli 构建得项目eslint配置2

    使用ESLint+Prettier来统一前端代码风格 加分号还是不加分号?tab还是空格?你还在为代码风格与同事争论得面红耳赤吗? 正文之前,先看个段子放松一下: 去死吧!你这个异教徒! 想起自己刚入 ...

随机推荐

  1. CentOS 6.6 搭建Zabbix 3.0.3 过程

    分享CentOS 6.6下搭建Zabbix 3.0.3 的过程,希望都大家有所帮助. 环境安装 系统环境: # cat /etc/RedHat-release CentOS release 6.6 ( ...

  2. vijos:P1285佳佳的魔法药水

    背景 发完了k张照片,佳佳却得到了一个坏消息:他的MM得病了!佳佳和大家一样焦急万分!治好MM的病只有一种办法,那就是传说中的0号药水……怎么样才能得到0号药水呢?你要知道佳佳的家境也不是很好,成本得 ...

  3. 2012年浙大:Hello World for U

    题目描述: Given any string of N (>=5) characters, you are asked to form the characters into the shape ...

  4. javascript关于undefined的判定

    对于我来说,在编写javascript的代码的时候,对于undefined的判定会写成: function isUndefined(para) { return (para === undefined ...

  5. The type org.springframework.core.io.support.ResourcePatternResolver cannot be resolved. It is ind

    转自:https://blog.csdn.net/evilcry2012/article/details/49208909 缺包 spring-core-.RELEASE.jar

  6. MATLAB 内存容量修改 zz

    MATLAB 内存容量修改 - Oliver的日志 - 网易博客 在用MATLAB做图像处理时 经常会碰到内存溢出的情况,可用如下方法修改,使得MATLAB的内存容量最大: 出自matlab:matl ...

  7. C#闪动任务栏的方法

    用FlashWindowEx可以实现窗口的闪烁,结构如下: /// <summary> /// 闪烁窗口 /// </summary> /// <param name=& ...

  8. [Makefile] 递归编译的Makefile的实现

    转自:http://www.linuxidc.com/Linux/2017-01/139702.htm 最近写了一个递归Makefile,目的是既可以实现子模块的单独编译,也可以不做任何修改就和整个程 ...

  9. UVaLive 4094 WonderTeam (贪心)

    题意:有n支队伍,每两支队伍打两场比赛(主客场各一次),胜得3分,平得1分,输不得分,比赛结束之后会评选出一个梦之队, 梦之队满足以下条件:进球总数最多,胜利场数最多,丢求总数最少,三个都不能并列,求 ...

  10. 截图上传功能 imageAreaselect

    前台: <script src="~/Scripts/jquery-2.1.4.min.js"></script> <link href=" ...