vue 分模块打包 脚手架_手动撸一个webpack4脚手架(仿vuecli2)

63e53d7ba80d004526c30204b7be4727.png

其实vue的脚手架是真的多,vue的nuxt脚手架的,vue的webpack脚手架的,还有各种gitHub上的后台管理系统模板的。。。。。

而vue-cli2的webpack模板,这个相信是大多数人最为熟悉的模板了。现在再去安装官网上模板的话,已经基于vue-cli3安装的了。

为了巩固webpack配置的知识,自己决定再手动撸一遍vue-cli2脚手架的配置。

01

新建一个空文件夹,命名demo,用vscode打开

02 新建src文件夹,在下面新建App.vue

*.vue 文件,是一个自定义的文件类型,用类似HTML的语法描述一个Vue组件。每个.vue文件包含三种类型的顶级语言块 template , script 和 style。这三个部分分别代表了 html,js,css。

但是浏览器本身并不认识.vue文件,所以必须对.vue文件进行加载解析,此时需要vue-loader。还需要css-loader,vue-template-compiler

<template>
    <div>
        <h3>this is a login componenth3>
    div>
template>
<script>export default {
}script>
<style lang="css">h3{color:skyblue;
    }style>
03 在项目根目录新建main.js,将App.vue挂载到vue实例上
import Vue from 'vue'
import App from './src/App.vue'
import './src/assest/css/global.css'
const div1=document.createElement('div')
document.body.appendChild(div1)
new Vue({
    //el:'#app',
    render: h => h(App)
}).$mount(div1)
//一直报错can not find element '#app',毕竟创建了div根节点而已
04 在项目根目录下新建webpack.config.js,作为webpack打包的配置

webpakc官网入口有个基础入口出口配置,传送门https://www.webpackjs.com/

简单来说,webpack就是一个模块加载器,所有资源都可以作为模块来加载,最后打包输出,其核心配置文件就是webpack.config.js

const path=require('path')//node的
const VueLoaderPlugin = require('vue-loader/lib/plugin');
module.exports={
    target:'web',//
    entry:path.resolve(__dirname,'main.js'),//打包指定文件为main.js
    output:{
        path:path.resolve(__dirname,'dist'),//打包输出路径为根目录的dist文件夹
        filename:"[name].js"//name是chunk的通配符,可以理解为就是入口文件名。本例打包出来的文件为:main.js
    },
    module:{
        //webpack只认识.js,对于其他文件需要配置响应的loader来解析
        rules:[
           {
                test:/\.vue$/,
                loader:'vue-loader'
            },
            {
                test:/\.css$/,
                loader:'css-loader'
            },
            {
                test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
                loader: 'url-loader',
                options: {
                  limit: 1024,
                  name: '[name].[hash:7].[ext]'
                }
              },
              {
                test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
                loader: 'url-loader',
                options: {
                  limit: 10000,
                  name:'fonts/[name].[hash:7].[ext]'
                }
            }
        ]
    },
    plugins: [
        // vue-loader was used without the corresponding plugin. Make sure to include VueLoaderPlugin in your webpack config.
        new VueLoaderPlugin()
    ],
}
05 npm安装所需loader

在终端输入npm init -y

会看到根目录下生成package.json,还有package-lock.json(用以记录当前状态下实际安装的各个npm package的具体来源和版本号。)

npm i webpack vue-loader css-loader vue-template-compiler url-loader file-loader -D 

npm i vue -S
06 然后就行了??no

打开package.json,增加自定义build命名

 "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "webpack --config webpack.config.js"
  }

最后在终端,输入npm run build可以看到成功打包。

打开dist目录下的main.js,可以看到打包后的内容:

0da8e2255c33f2d83d6295a76f5e8dc8.png

07 后续

为了能在浏览器显示,我们来安装webpack-dev-server来模拟一个服务器环境

1f974e915f1eb459f63c8aae658e3299.png

npm i webpack-dev-server cross-env
---------------------------------------------------
 "build": "cross-env NODE_ENV=production webpack --config webpack.config.js",
 "dev": "cross-env NODE_ENV=development webpack-dev-server --config webpack.config.js"

npm run dev,打开localhost:3000

结果如下,mian.js并不能展现网页布局在浏览器上

这时候需要在配置文件中加上htmlwebpackplugin,该插件将为你生成一个 HTML5 文件:打包输出文件夹dist/index.html

a88dea6acba2f69b99c9c73aba242a24.png

这时候需要在配置文件中加上htmlwebpackplugin,该插件将为你生成一个 HTML5 文件:打包输出文件夹dist/index.html

npm install --save-dev html-webpack-plugin
------------------------------------
plugins: [new HtmlWebpackPlugin()]

93314014e4271f0856470d8f7fd3205a.png

再次打开localhost:3000

7783e2c1f494c51dcedfa4f98d8c9730.png

注意css样式没有起作用,增加style-loader

style-loader:配合css-loader使用,以形式在html页面中插入css代码

    {
                test:/\.css$/,
                use:[
                    'style-loader',
                    'css-loader'
                ]
            },

541ef9984b9493f8cdeecebbaca34c71.png

大功告成!

在打包的时候有没有发现npm run dev与npm run build的区别:

webpack-dev-server,生成文件的都是在内存里,而npm run build生成文件是显示在硬盘目录里的,毕竟build里面是webpack命令。

感谢阅读!

7b77026d7fda24a9bfd0cd4d6ef57e00.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值