本篇文篇纯属个人笔记,实现工程化打包(用打包后的文件可以正常渲染页面),后续继续更新配置开发环境与生产环境,如果有不合理的地方还望各位指点!

不用脚手架,直接用vue和webpack搭建前端工程化项目

首先废话不多说,上手就是干

  1、npm init -y            //创建一个package.json文件 -y选择默认的配置;

npm init -y

  2、安装webpack、webpack-cli       webpack4之后就要另外安装 webpack-cli 否则运行时会抛错,到时候还得安装

npm i webpack webpack-cli --save-dev

  3、webpack安装好了后,现在开始安装 vue 、vue-loader

npm i vue vue-loader --save-dev

  安装完后有个提示,说 vue-loader 依赖于 css-loader 但未安装 ,所以还得安装下 css-loader

  npm i css-loader --save-dev

  4、新建基本的项目目录文件 src。及打包的入口文件和相关引用的文件。

  

    4.1, 这三个页面的代码

  


 1.app.vue
<template>
<div class='test'>{{test}}</div>
</template> <script>
export default {
data(){
return {
test:"基本的项目依赖"
}
}
}
</script> <style>
.test{
color:red;
}
</style> 2.main.js
import Vue from 'vue'
import App from './app.vue'
new Vue({
el:'#app',
render: h => h(App)
})
3.index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>webpack app</title>
</head>
<body>
<div id="app"></div>
</body>
</html>

  5、修改package.json 文件的 scripts 里面的运行命令。

  "scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build":"webpack --config config/webpack.config.base.js" //使用本项目webpack 进行打包,定位到config目录下的webpack.config.base.js 别忘了加 config/ ,不然打包时报错 提示找到文件。。
},

  6、基本的两大依赖已经安装完后,现在开始写 webpack 的配置文件了。。

    1,在根目录上新建个config文件夹 ,在文件夹里新建一个 webpack.config.base.js  这个文件主要是存放  生产环境 与 开发环境 配置的共公信息。

    2,在webpack.config.base.js 里面写打包的配置。

const path = require('path');

const config = {
    context: path.resolve(__dirname, '../'),
      entry:path.resolve(__dirname,'../src/main.js'), //这里的为什么上层目录。。其实这跟你配置的 package.json 里面的scripts 里运行的路径有关。 
     output:{
path: path.resolve(__dirname,'../dist'),
filename:"js/[name]-app-[hash].js",
publicPath:'./'
},
resolve:{
alias:{
'vue$':'vue/dist/vue.esm.js',
'@':path.resolve(__dirname,"../src")
}
},
module:{
rules:[
{
test:/\.vue$/,
loader:'vue-loader'
},
{
test:/\.css$/,
use:[
'css-loader'
]
},
{
test:/\.(png|jpe?g|gif|svg)$/,
loader:'url-loader',
options:{
limit:1024,
name:'[name].[ext]-[hash]'
}
}
]
}
} module.exports = config;

  7、现在可以运行项目了。npm run build  进行打包了。看下会报什么错,在填坑

    

    果然踩坑了,看下是什么提示。。。第一段说,vue-loader 依赖的 vue-template-compiler 未安装。  第二段 vue-loader 的插件未在webpack中配置。。第三段是基于前二段报的错,类型不对。。

    现在开始安装 vue-template-compiler 和 加上vue-loader插件配置。

    

npm i vue-template-compiler --save-dev

//配置vue-loader插件
  const vueloaderplugin = require('vue-loader/lib/plugin')
 
  在 module下面写入插件的配置
    plugins:[
      new vueloaderplugin()
    ]
这两个加完了后在 npm run build 打包看看

    

  打包没有报错。而且目录下多了一个dist目录。。打开看一下

  

  发现没有主界面。根目录下的 index.html 没有打包进来。。。这光有js没用啊。运行不了啊。  怎么办呢,webpack 配置问题。。安装html-webpack-plugin 插件

npm i html-webpack-plugin --save-dev

  webpack配置中新加入这个插件,并指定参数。

const htmlwebpackplugin = require('html-webpack-plugin')
 context:path.resolve(__dirname,'../'),   //与entry、plugins 同级别  加这段是关键
plugins:[
new vueloaderplugin(),
new htmlwebpackplugin({
filename:'index.html',
template:'index.html'
})
]

  该加的都加上了,再次 npm run build 看下打包成什么样子了

  有了index.html后,这就放心了。。。打开index.html 在浏览器中运行下看看,有没有渲染成我们想要的样子。。。

发现在我们在 app.vue里面给它写了一个样式啊,现在根本就没有加进来。其实安装css-loader时 也要安装一下 style-loader ,npm并没有给提示。这就很头疼,只能自己记住要安装这个包了。现在安装这个style-loader 这个包

npm i style-loader --save-dev
//安装完包后,在webpack里面也要加上配置,module->rules
{
test:/\.css$/,
use:[
'style-loader', //style-loader 要在 css-loader 上面。。顺序不能乱
'css-loader' ]
},

重新 运行打包后,在浏览器中运行查看,样式已经加上去了。。。  还有打包图片、js文件等。在下一篇去实现。  现在我把 webpack.config.base.js的配置贴上来。。。

  

const path = require('path');
const vueloaderplugin = require('vue-loader/lib/plugin')
const htmlwebpackplugin = require('html-webpack-plugin') const config = {
context:path.resolve(__dirname,'../'),
entry:path.resolve(__dirname,'../src/main.js'),
output:{
path: path.resolve(__dirname,'../dist'),
filename:"js/[name]-app-[hash].js",
publicPath:'./'
},
resolve:{
alias:{
'vue$':'vue/dist/vue.esm.js',
'@':path.resolve(__dirname,"../src")
}
},
module:{
rules:[
{
test:/\.vue$/,
loader:'vue-loader'
},
{
test:/\.css$/,
use:[
'style-loader',
'css-loader' ]
},
{
test:/\.(png|jpe?g|gif|svg)$/,
loader:'url-loader',
options:{
limit:1024,
name:'[name].[ext]-[hash]'
}
}
]
},
plugins:[
new vueloaderplugin(),
new htmlwebpackplugin({
filename:'index.html',
template:'index.html'
})
]
} module.exports = config;

  

免责声明

  • 本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。
  • 博主在此发文(包括但不限于汉字、拼音、拉丁字母)均为随意敲击键盘所出,用于检验本人电脑键盘录入、屏幕显示的机械、光电性能,并不代表本人局部或全部同意、支持或者反对观点。如需要详查请直接与键盘生产厂商法人代表联系。挖井挑水无水表,不会网购无快递。
  • 博主的文章没有高度、深度和广度,只是凑字数。由于博主的水平不高(其实是个菜B),不足和错误之处在所难免,希望大家能够批评指出。
  • 博主是利用读书、参考、引用、抄袭、复制和粘贴等多种方式打造成自己的文章,请原谅博主成为一个无耻的文档搬运工!

webpack4.x + vue2.x 构建前端工程化(1)的更多相关文章

  1. 使用webpack+vue.js构建前端工程化

    参考文章:https://blog.csdn.net/qq_40208605/article/details/80661572 使用webpack+vue.js构建前端工程化本篇主要介绍三块知识点: ...

  2. 10分钟学会前端工程化(webpack4.0)

    一.概要 1.1.前端工程化 随着前端的不断发展与壮大,前端变得越来越复杂,组件化.模块化.工程化.自动化成了前端发展中不可或缺的一部分,具体到前端工程化,面临的问题是如何提高编码->测试-&g ...

  3. 前端工程化系列[04]-Grunt构建工具的使用进阶

    在前端工程化系列[02]-Grunt构建工具的基本使用和前端工程化系列[03]-Grunt构建工具的运转机制这两篇文章中,我们对Grunt以及Grunt插件的使用已经有了初步的认识,并探讨了Grunt ...

  4. 前端工程化系列[03]-Grunt构建工具的运转机制

    在前端工程化系列[02]-Grunt构建工具的基本使用这篇文章中,已经对Grunt做了简单的介绍,此外,我们还知道了该如何来安装Grunt环境,以及使用一些常见的插件了,这篇文章主要介绍Grunt的核 ...

  5. web前端工程化/构建自动化

    前端工程化 前端工程化的概念在近些年来逐渐成为主流构建大型web应用不可或缺的一部分,在此我通过以下这三方面总结一下自己的理解. 为什么需要前端工程化. 前端工程化的演化. 怎么实现前端工程化. 为什 ...

  6. vue2.0构建淘票票webapp

    项目描述 之前一直用vue1.x写项目,最近为了过渡到vue2.0,特易用vue2.0栈仿写了淘票票页面,而且加入了express作为后台服务. 前端技术栈:vue2.0 + vue-router + ...

  7. 前端工程化开发之yeoman、bower、grunt

    上两遍文章介绍了前端模块化开发(以seaJs为例)和前端自动化开发(以grunt为例)的流程,参见: http://www.cnblogs.com/luozhihao/p/4818782.html ( ...

  8. [转]基于gulp和webpack的前端工程化

    本文样例代码 :https://github.com/demohi/learning-gulp 本文主要简单介绍一下基于gulp和webpack的前端工程化. 技术栈 React.js reFlux ...

  9. 前端工程化(二)---webpack配置

    导航 前端工程化(一)---工程基础目录搭建 前端工程化(二)---webpack配置 前端工程化(三)---Vue的开发模式 前端工程化(四)---helloWord 继续上一遍的配置,本节主要记录 ...

随机推荐

  1. postman教学视频百度网盘转载分享

    百度云盘教学视频分享:https://pan.baidu.com/s/1r_e08FOkvQBZcC5-vU5M4w postman官网及下载地址:https://www.getpostman.com ...

  2. 两个html之间进行传值,如何进行?

    function turnto(){ var getval=document.getElementById("text").value; turngetval=escape(get ...

  3. C++入门经典-例6.17-输出每行数组中的最小值

    1:代码如下: // 6.17.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> using ...

  4. C++入门经典-例5.15-回收动态内存的一般处理步骤

    1:正确的步骤应该是如下代码所示: // 5.15.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostrea ...

  5. C++入门经典-例3.16-使用do-while循环进行计算

    1:代码如下: // 3.16.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> usin ...

  6. 如何把java项目打包成war包

    用Eclipse手动打包 右击工程名 选择Export… 选择Web → WAR file 点击Browse,选择导出路径 然后war包就被导出来啦~是不是很简单呢 利用Maven的package命令 ...

  7. Linux常用命令及操作(第二弹)

    Ctrl l清屏 Ctrl d关闭终端 Ctrl Alt T打开终端 pwd 查看当前的目录 Shift Ctrl C复制 Shift Ctrl V粘贴 Shift Ctrl N打开新的终端 F11 ...

  8. TCP层bind系统调用的实现分析

    说明:该文章中部分代码未能完全理解透彻,可能对您造成误解,请慎读: 并建议您先阅读本博另外一篇文章:<Linux TCP套接字选项 之 SO_REUSEADDR && SO_RE ...

  9. leetcode-easy-string-7 Reverse Integer

    mycode class Solution(object): def reverse(self, x): """ :type x: int :rtype: int &qu ...

  10. linux如何查看目录或文件夹的总大小--du命令

    记录一下如何查看一个目录或文件夹的总大小. 使用du命令的选项-s,可以统计整个目录或文件夹的大小. 例如 du -sk ./ 156k -k表示以KB为单位计算.