webpack的配置

105 阅读1分钟

Webpack(模块打包工具)

最早的时候,是js的打包工具,而现在可以打包任何形式的模块文件, 帮助我们管理复杂项目的工具

webpack网址: www.webpackjs.com/concepts/lo…

安装webpack

  • npm init 初始化一个node的环境

  • cnpm install webpack webpack-cli -D 组件内安装webpack

  • npx webpakc -v 查看组件内的webpakc版本

配置

src同级配置webpack.config.js

const path = require("path")
module.exports = {
    // mode:"development",
    entry: {
        // 告诉webpack打包src下的index.js文件
        main: "./src/index.js"
    },
    output: {
        // 输入文件名
        filename: "main.js",
        // 输出目录的绝对路径
        path: path.resolve(__dirname, "dist")
    },
    module: {
        rules: [{
            // 图片 要打包的后缀名
            test: /\.(jpg|png|gif|woff)$/,
            use: {
                //告知webpack某些特定文件如何打包
                loader: 'url-loader',
                options: {
                    //保存图片的名称,占位符
                    name: '[name]_[hash].[ext]',
                    //把图片打包到某个文件中
                    outputPath: "images/",
                    // 如果图片大与2048就会出现在dist里面,如果没超就在main.js里面
                    limit: 2048,
                }
            }
        },
        {
            // scss样式 要打包的后缀名
            test: /\.scss$/,
            use: [
                "style-loader",
                {
                    loader: "css-loader",
                    options: {
                        importLoaders: 2
                    }
                },
                "sass-loader",
                "postcss-loader",
            ]
        },
        {
            // 字体 要打包的后缀名
            test: /\.(eot|ttf|svg)$/,
            use: {
                //告知webpack某些特定文件如何打包
                loader: 'file-loader',
            }
        },
        ]
    }
}
  • 所有用到的loader都需要下载

打包结束后自动生成一个html文件 并把打包生成的js也引入进去 在webpack.config.js

//下载的指令:cnpm install --save-dev html-webpack-plugin
// 需要在src目录下写一个index.html用于复制
const HtmlWebpackPlugin = require("html-webpack-plugin")
module.exports = {
   plugins: [new HtmlWebpackPlugin({
       //因为你普通打包下来的html没有我们放属性的div,所有复制一个src下的index.html
        template:"src/index.html"
    })],  
}

自动更新打包

第一种方法

--watch 自动打包,页面需要手动刷新

//package.json配置watch监听打包,只要内容发生变化,就会自动更新
"scripts": {
        "watch": "webpack --watch"
 },
 //启动指令 npm run watch

第二种方法

dev-server 自动打包,自动刷新页面

先下载dev-server

cnpm install webpack-dev-server -D

//首先配置package.json
"scripts": {
	//帮助我们启动http服务器
        "start": "webpack-dev-server"
 },
 //然后在webpack.config.js配置
 devServer: {
        // 基础配置项,指向dist文件
        contentBase: "./dist",
        // 自动打开浏览器
        open: true,
        // 设置默认端口号
        port: 8081
    },
 //启动指令 npm run start

使用Babel处理ES6的语法

www.babeljs.cn/ Babel网址,

1.首先下载

​ cnpm install --save-dev babel-loader @babel/core

​ cnpm install @babel/preset-env --save-dev

webpack.config.js配置
 module: {
  rules: [
    	{
        	test: /\.js$/,
        	exclude: /node_modules/,
        	loader: "babel-loader",
            options:{
                  presets:["@babel/preset-env"]
           }
    	},
	]
 }