欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

webpack的基本使用

程序员文章站 2022-07-12 19:22:31
...

webpack

  • webpack是一个前端资源打包工具,他将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源

webpack的基本使用

  • 先初始化项目
  npm init -y

-需要安装的webpack包以及第三方加载器的包

 npm install webpack -D
 npm install webpack-cli -D
 npm install webpack-dev-server -D
        //为了避免每次修改代码之后都执行webpack命令,则使用了webpack-dev-server  
        //小型的express服务器 为静态文件提供服务,自动刷新和热替换
        //webpack-dev-server会帮我们自动生成一个内存中的bundle.js
 npm install html-webpack-plugin -D
          //webpack的插件,使用该插件可以生成自己指定的html文件,和配置使用自己设置的加载器
         //使用该插件后,不需要我们手动的处理bundle.js的引用路径了,该插件帮我们自动创建了一个合适的script
         //该插件自动在内存中根据指定的页面生成一个内存的页面,同时也会把打包好的bundle.js追加到页面中

 npm install style-loader css-loader node-sass sass-loader url-loader file-loader -D 
        //处理不同后缀名的样式文件和图片的第三方加载器
 npm install babel-core babel-loader babel-plugin-tranform-runtime babel-preset-env babel-preset-stage-0 -D  
        //babel是将高级的js转化为浏览器能处理的低级的js
  • 根目录下新建webpack.config.js文件
  • 配置该文件
    const path = require('path')
    const htmlWebpackPlugin = require('html-webpack-plugin')
    module.exports={
        entry:path.join(__dirname,'./src/main.js'),//入口,表示webpack打包那个文件
        output:{
            path:path.join(__dirname,'/dist'),//指定打包好的文件,输出到那个目录中
            filename:'bundle.js'//指定输出的文件的名称
        },
        plugins:[//配置html-webpack-plugin插件
            new htmlWebpackPlugin({
                template:path.join(__dirname,'/src/index.html'),//指定模板页面
                filename:'index.html'//根据指定的页面生成一个内存的页面的名称
                })
        ],
        module:{//配置第三方解析加载器
            rules:[
             {test:/\.css$/,use:['style-loader','css-loader']},
             {test:/\.less$/,use:['style-loader','css-loader','less-loader']},
             {test:/\.scss$/,use:['style-loader','css-loader','sass-loader']},
             {test:/\.(jpg|png|gif|bmp|jpeg)$/,use:'url-loader?limit=39290&name=[hash:8]-[name].[ext]'},
             {test:/\.(ttf|eot|svg|woff|woff2)$/,use:'url-loader'},
             {test:/\.jsx?$/,use:'babel-loader',exclude:/node_modules/},
            ]
        }
    }
  • 根目录下新建.babelrc文件
  • 使用babel将高级js语法转化为低级js语法
   {
       "presets":["env","stage-0"],
       "plugins":["tranform-runtime"]
   }

-在package.json文件中配置webpack-dev-server启动的默认选项

  //在scripts标签下新添"dev"标签,具体内容如下:
  "dev":"webpack-dev-server  --open --port 3000 --hot"
  //webpack-dev-server 使用npm run dev即可运行该服务
  //--open 自动打开localhost页面
  //--port 3000 修改端口号
  //--hot 不用每次修改数据创建一个新的bundle.js文件

-启动服务

    npm run dev

由于安装版本的问题使得项目运行不起来,以下是我安装版本的示例,仅供参考

    "dependencies": {
    "bootstrap": "^4.4.1",
    "jquery": "^3.5.0"
  },
  "devDependencies": {
    "@babel/runtime": "^7.9.2",
    "babel-core": "^6.26.3",
    "babel-loader": "^7.1.5",
    "babel-plugin-transform-runtime": "^6.23.0",
    "babel-preset-env": "^1.7.0",
    "babel-preset-stage-0": "^6.24.1",
    "css-loader": "^0.28.7",
    "file-loader": "^1.1.5",
    "html-webpack-plugin": "^2.30.1",
    "less": "^2.3.1",
    "less-loader": "^4.0.5",
    "popper.js": "^1.16.0",
    "sass-loader": "^6.0.6",
    "style-loader": "^0.19.0",
    "url-loader": "^0.6.2",
    "webpack": "^3.8.1",
    "webpack-dev-server": "^2.9.3"

dependencies和devDependencies的区别

  • –save (dependencies)向生产环境添加依赖:项目部署上线后的服务器环境
  • –save-dev (devDependencies) 向开发环境添加依赖 :平时开发使用的环境
相关标签: webpack