webpack4+Vue搭建自己的Vue-cli项目过程分享
前言对于vue-cli的强大,使用过的人都知道,极大的帮助我们降低了vue的入门门槛 最近在看webpack4,深感知识浅薄,这两天也一直在思考cli的配置,借助一些别人的实践,尝试自己搭建vue的项目,这里使用webpack4版本,之前我在网上查找别人的vue项目搭建,但是都是webpack3的,所以写了本文,如果有错误,或者有什么问题,请大佬们指出 关于webpack的本文不会多说,请看 关于本文的github地址 你们的start是我发表的动力!!!!! 前置知识•熟悉 webpack4 •熟悉 vue 搭建基本骨架
安装webpack4
在开始之前先实验一下环境 根目录新建文件 index.html
Vue
.vue文件是无法直接运行的,需要在webpack里面配置loader 这里参照某课的老师的方法,html用webpack生成(后面说明) 在根目录新建index.js 删除index.html h(App)
}).$mount(root)
改写webpack.config.js module.exports = {
entry: path.resolve(dirname,'src/index.js'),//关于path模块可以看看阮一峰的教程 http://javascript.ruanyifeng.com/nodejs/path.html#toc0 output: { path: path.resolve(dirname,'dist'),filename: 'index.js' },module: { rules: [{ test: /.vue$/,loader: 'vue-loader' }] } } 在package里面添加脚本
控制台运行
不出意外会报错 这里有2个问题,一个是没有指定mode 一个是没有引用vue的插件 我们需要改写webpack.config.js,在config里面加一行
再次运行npm run build 会报错,需要安装一个包 这个报错,原本在vue-loader就有提示,不知道为什么现在没有,运行之前报错 Error: [vue-loader] vue-template-compiler must be installed as a peer dependency,or a compatible compiler implementation must be passed via options 安装vue-template-compiler
再再次运行npm run build 假如按步骤来不除意外这里可以打包成功了~~~~ 我们需要验证打包文件时候是否正确,所以这里使用插件HtmlWebpackPlugin,帮我们自动创建html文件,并且在后续的hash文件名上很有用,具体可以看官方介绍
改webpack.config.js代码 npm run build打包一下,dist文件夹下面会有两个文件 启动一个静态服务器 打包Vue程序完成~~~~ 至此完成了最基本的webpack配置 接下来我们要完成的的配置开发环境 配置开发环境关于开发环境以及生成环境,webpack是需要区分的,根据文档模块,我决定在命令里面指定模式,相应的就将开发环境以及生成环境分开, 这里我使用的是提起基本的webpack配置使用webpack-merge这个包来拼接我们webpack配置
修改配置文件 将各各环境的代码区分开,webpack的结构是这样的 webpack.config.base.js const config = {
entry: path.resolve(__dirname,'../src/index.js'),loader: 'vue-loader' }] } } module.exports = config const config = merge(baseConfig,{
plugins: [ new VueLoaderPlugin(),new HtmlWebpackPlugin() ] }) module.exports = config 这里配置开发环境就是重头戏了,我们使用webpack-dev-server webpack-dev-server是一个小型的Node.js Express服务器,代码都跑在内存里面 安装webpack-dev-server 最后在package里面添加脚本 "build": "webpack --mode=production --config build/webpack.config.build.js", "dev": "webpack-dev-server --mode=development --progress --config build/webpack.config.dev.js" 执行npm run dev查看控制台 这就成功了,在浏览器里面输入,修改app.vue文件,实现了vue-cli的热加载了~~~~ 接下来完善一下,不能只有.vue文件的loader,其他的webpack也要认识 我们配置一下图片的loader,以及css的loader,同时css使用postcss进行预处理 url-loader 用于将文件转换为base64 URI file-loader是依赖loader
添加配置webpack.config.base.js>module>rules 配置css(vue-cli里面的实现非常友好,有机会可以去看看) 下面的是最简单的配置 添加配置webpack.config.base.js>module>rules (postcss不了解谷歌一下) 根目录新建文件postcss.config.js,安装autoprefixer (自动添加浏览器前缀) module.exports = {
plugins: [ autoprofixer() ] } 配置到这里基本的图片以及css就配置完成了,运行一下试试 我找src下面创建了assets/img/user.jpg app.vue
你好 {{ data }}
![]() 实现了开发环境的图片以及css的配置 打包一下试试 build后生成的目录是这样的 这不是我们想要的,webpack把代码,类库,css都打包在一起,这样不管是上线还是首屏加载都有影响,所以这里我们要优化webpack 在处理之前想安装一个可以帮助我们每次build之前自动删除上次build生成的文件的插件 clean-webpack-plugin这个插件不知道为什么,怎么配置路径都没效果 这里我使用rimraf来进行删除(vue-cli也是使用rimraf,但是他是写在代码里面)
在package里面变一下脚本,让打包之前帮我们删除之前到打包文件 "build-webpack": "webpack --mode=production --config build/webpack.config.build.js", "delete": "rimraf dist", "build": "npm run delete && npm run build-webpack" 分离打包css 它会将所有的入口 chunk(entry chunks)中引用的 *.css,移动到独立分离的 CSS 文件
因为开发环境和生产环境不一样 我们需要将css部分的代码分环境配置 1.将原先的css配置放到webpack.config.dev.js里面 2.在webpack.config.build.js里面重写 这样的话,我们开发环境不影响依旧是之前到模式,build的时候用ExtractTextPlugin帮我们分离非js文件,实现css的分离打包 我们打包一下试试npm run build 分离js文件接下来是分离js文件,就是将库文件以及我们的代码分离开,利于上线后的浏览器缓存,代码会经常变,库不会经常变 在webpack4之前js分离用的插件是CommonsChunkPlugin,不过这插件现在移除了,现在用的是optimization.splitChunks 来进行公共代码与第三方代码的提取,splitChunks参数如下 {},// 名称,此选项课接收 function
cacheGroups: { // 缓存组会继承splitChunks的配置,但是test、priorty和reuseExistingChunk只能用于配置缓存组。
priority: "0",// 缓存组优先级 false | object |
vendor: { // key 为entry中定义的 入口名称
chunks: "initial",// 必须三选一: "initial"(初始化) | "all" | "async"(默认就是异步)
test: /react|lodash/,// 正则规则验证,如果符合就提取 chunk
name: "vendor",// 要缓存的 分隔出来的 chunk 名称
minSize: 0,minChunks: 1,enforce: true,reuseExistingChunk: true // 可设置是否重用已用chunk 不再创建新的chunk
}
}
}
}
官方包括这解释,我并不是很看懂,所以打包策略并不是很好 在webpack.config.build.js>config build一下查看目录,可以看出代码与库之间分离了 关于eslint,我就不引入的,有兴趣可以讨论一下 .gitignore 这里处理一下git 新建文件.gitignore 处理一下编译器的统一配置 新建文件 .editorconfig,(关于editorconfig,以及配置解释) [*]
charset = utf-8 indent_style = space indent_size = 2 end_of_line = lf insert_final_newline = true trim_trailing_whitespace = true 还有一点要注意,假如没有效果,vscode需要安装一个插件EditorConfig for VS Code,其他编译器不太清楚 .babelrc 处理一下ES6,以及js文件的webpack的loader配置 今天装了babel-loader8.0.0 报错报一上午,心态都搞崩了,所以这里我使用的是7版本
在webpack.config.base.js>module>rules里面添加代码 新建文件 .babelrc 首先检查开发环境 我新建了一个es6语法的js 导入到app.vue里面 运行结果 最后至此,基本的vue项目骨架的搭建完毕了,当然他没有vue-cli那么强大,或许最大的益处是让我们熟悉一个vue项目的大致webpack配置,当然我们可以一步一步的优化项目。编程之家 52php.cn 收集整理的教程希望能对你有所帮助,如果觉得编程之家不错,可分享给好友!感谢支持。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |