webpack基本使用

认识webpack

  1.什么是webpack
        Webpack 是一个打包模块化 JavaScript 的工具,在 Webpack 里一 切文件皆模块,通过 Loader转换文件,通过 Plugin注入钩子,最后输出由多个模块组合成的文件。 Webpack专注于构建模块化项目。
        webpack是一个前端项目构建工具,他是基于nodejs开发出来的一个前端工具
    2.webpack对我们有什么帮助?
        注于处理模块化的项目,能做到开箱即用、一步到位
        可通过+Plugin +扩展,完整好用又不失灵活
        使用场景不局限于+Web+开发
       语法打包兼容低版本浏览器
    3.Webpack的缺点是只能用于模块化开发的项目

开始使用webpack

  • 安装nodejs,现在npm会跟着node安装一起安装。安装后 使用  node -v  npm -v 查看版本号,显示ok表示安装没问题
  • 安装 webpack npm i(nstall) webpack【@4/5 --- 这里表示版本号 可以不带,不带默认装最新版本 】 webpack-cli  -D【-D 表示开发时依赖】  ===》 安装 webpack 和 webpack-cli 
  • 新建webpack.config.js  webpack配置文件
  • 执行打包命令 npx  webpack 【一般会在package.json中配置简易指令 script属性中,添加 “bulid”:"webpack"】,然后 npm run bulid 表示执行打包命令

webpack配置

  

《webpack.config.js》
const path = require('path')
module.exports = { //导出一个对象
    entry: './src/main.js', //打包入口
    /*打包出口,一个对象,指定
    filename:打包后的js名
    path,打包后的路径
    */
    output: {
        filename: 'bundle.js',
        path: path.resolve(__dirname, 'dist')
            /*由于这里需要绝对路径,需要用到nodejs种的path模块
            __dirname 表示当前文件夹的绝对路径,
            这里表示在项目跟目录下新建dist文件作为打包后存放路径
            */
    }, //到这里就是webpack最基本的配置【webpack默认只能打包js文件】,没有用到各种加载器【loader】,插件【Plugin】,借助两者去处理js,css,img,.vue等复杂模块,
}

使用Loader工具去打包指定后缀名的文件

  1.  打包.vue   使用 vue-loadery& vue-template-compiler &css-loader
const path = require('path')
 
const VueLoaderPlugin = require('vue-loader/lib/plugin')
    //官网除了表示配置打包规则rules,还要实例化一个vueloader插件
 
module.exports = { //导出一个对象
 
   mode:'development/production',//开发模式【体积打,打包后的代码可读性强】和生产模式【体积小,打包后的代码完全压缩,代码基本不具备可读性】
    entry: './src/main.js', //打包入口
    /*打包出口,一个对象,指定
    filename:打包后的js名
    path,打包后的路径
    */
    output: {
        filename: 'bundle.js',
        path: path.resolve(__dirname, 'dist')
            /*由于这里需要绝对路径,需要用到nodejs种的path模块
            __dirname 表示当前文件夹的绝对路径,
            这里表示在项目跟目录下新建dist文件作为打包后存放路径
            */
    }, //到这里就是webpack最基本的配置【webpack默认只能打包js文件】,没有用到各种加载器【loader】,插件【Plugin】,借助两者去处理js,css,img,.vue等复杂模块,
  
  //配置打包规则  固定写法!!!
  
   module: {
        rules: [{
            test: /.vue$/, // 正则表示匹配.vue结尾的文件
            loader: 'vue-loader',
        }]
    },
    plugins: [
        new VueLoaderPlugin(), //vue插件实例
    ]
}

  到这里使用webpack就已经可以正常打包js以及.vue后缀的文件了,但是有一个问题就是 npm 安装的Vue 中会生成三个js文件:

  • runtime-only 运行时的 vue.common.js
  • compiler-only 编译时的compiler.js
  • runtime+compiler 兼备的vue.js

  而webpack默认会去找到vue.common.js然后打包导出,导致页面运行还是有问题。=》解决:配置 vue别名,默认找到vue.js 打包导出

 1 const path = require('path')
 2 
 3 const VueLoaderPlugin = require('vue-loader/lib/plugin')
 4     //官网除了表示配置打包规则rules,还要实例化一个vueloader插件
 5 
 6 module.exports = { //导出一个对象
 7     mode: 'development',
 8     entry: './src/main.js', //打包入口
 9     /*打包出口,一个对象,指定
10     filename:打包后的js名
11     path,打包后的路径
12     */
13     output: {
14         filename: 'bundle.js',
15         path: path.resolve(__dirname, 'dist')
16             /*由于这里需要绝对路径,需要用到nodejs种的path模块
17             __dirname 表示当前文件夹的绝对路径,
18             这里表示在项目跟目录下新建dist文件作为打包后存放路径
19             */
20     }, //到这里就是webpack最基本的配置,没有用到各种处理器处理js,css,img等资源
21     module: {
22         rules: [{
23             test: /.vue$/, // 正则表示匹配.vue结尾的文件
24             loader: 'vue-loader',
25         }]
26     },
27     plugins: [
28         new VueLoaderPlugin(), //vue插件实例
29     ],
30     resolve: { //表示一些解决方案
31         alias: { //别名
32             'vue': 'vue/dist/vue.js', //这里表示导入vue时,导入此处指定路径下的文件
33         }
34     }
35 }
View Code

总结:webpack本身只能打包js文件,打包其他文件,例如 vue组件.vue文件,.css等就需要借助loader;

   loader就是一组抓门用于打包特定文件的处理程序。

    

原文地址:https://www.cnblogs.com/Hijacku/p/14739032.html