webpack入门,配置实例

news/2024/7/24 3:47:56 标签: webpack

结构:
web
webpack.config.js

// webpack.config.js
const webpack = require ("webpack");
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
    // entry: {
    //     main:__dirname + '/src/main.js', // 对象方式最可拓展,多页面应用,第三方库分离均可用
    // },
    entry:__dirname + '/src/main.js', // 入口文件路径
    // output: {
    //     filename: '[name].js',
    //     path: __dirname + '/dist'//如果配置创建了多个单独的 "chunk"(例如,使用多个入口起点或使用像 CommonsChunkPlugin 这样的插件),则应该使用占位符(substitutions)来确保每个文件具有唯一的名称。
    //   },
    output: {
        path: __dirname + '/dist/', // 存放打包后文件的路径
        filename: 'bundle.js'   // 打包后文件名
    },
    devtool: 'source-map', // 配置生成的source-map
    devServer: {//devServer配置
        contentBase: './dist',//默认 webpack-dev-server 会为根文件夹提供本地服务器,如果想为另外一个目录下的文件提供本地服务器,应该在这里设置其所在目录.
        host:'localhost',
        port: '9000',//设置默认监听端口,如果省略,默认为"8080".
        inline: true,//当源文件改变时会自动刷新页面.
        historyApiFallback: true,//在开发单页应用时非常有用,它依赖于 HTML5 history API,如果设置为 true,所有的错误跳转将指向 index.html.
        // watchOptions: {
        //     aggregateTimeout: 2000,//浏览器延迟多少秒更新
        //     poll: 1000//每秒检查一次变动
        // },
        hot:true,//启动热更新,必须搭配new webpack.HotModuleReplacementPlugin()插件
        open: true//直接打开浏览器
    },
    plugins: [
        new HtmlWebpackPlugin({
            template: __dirname + '/src/index.html' // new一个插件的实例,并传入相关的参数
        }),
        new webpack.HotModuleReplacementPlugin(),
        //new webpack.NamedModulesPlugin(), //添加,官方推荐的帮助分析依赖的插件
        // new CleanWebpackPligin("./dist", {
        //     exclude: ["index.html"]
        //   })
        // new HtmlWebpackPlugin({
        //     template:"index.html",
        //     title:'index',
        //     inject: true
        // }),
        // new webpack.NamedModulesPlugin(), 
        // HMR shows correct file names in console on update.
        // new webpack.NoEmitOnErrorsPlugin()
    ],
    module: {//loader 用于对模块的源代码进行转换
        rules: [
            {
                test: /\.js$/,
                loader: 'babel-loader',
                exclude: /node_modules/, // 编译打包时排除node_modules文件夹
                // query: {
                //     presets: ['es2015']//有@babel/preset-env后不需要此项配置
                // }
            },
            // {
            //     test: /\.css$/,
            //     use: [
            //         { loader: 'style-loader'},
            //         {
            //             loader: 'css-loader?modules',// 此处多加了一个?modules,l类名会被编译成hash字符串
            //             options: { modules: true }
            //         }
            //     ]
            // }
            {
                test: /\.css$/,
                use: [
                    // 'style-loader', 'css-loader?modules&importLoaders=1',//importLoader写在potions里
                    // {loader:'style-loader'},
                    // {loader:'css-loader?modules'},
                    'style-loader', 'css-loader?modules',//上两行的简写
                    {
                        loader: 'postcss-loader',
                        options: {
                            importLoaders: 1,
                            plugins: [
                                require('autoprefixer')//根据浏览器添加前缀(npm install --save-dev postcss-loader autoprefixer)
                            ]
                        }
                    }
                ]
            }
        ]
    }
};

package.json

{
  "name": "study",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "webpack-dev-server",
    "build": "webpack --config ./webpack.prod.config.js --progress"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@babel/core": "^7.10.5",
    "autoprefixer": "^9.8.5",
    "babel-core": "^6.26.3",
    "babel-loader": "^8.1.0",
    "babel-preset-es2015": "^6.24.1",
    "css-loader": "^3.6.0",
    "html-webpack-plugin": "^4.3.0",
    "postcss-loader": "^3.0.0",
    "style-loader": "^1.2.1",
    "webpack": "^4.43.0",
    "webpack-cli": "^3.3.12",
    "webpack-dev-server": "^3.11.0"
  }
}

postcss.config.js

// postcss.config.js
module.exports = {
    plugins: [
        // 调用autoprefixer插件,还可以配置选项添加需要兼容的浏览器版本.
        require("autoprefixer")[{ browsers: ['ie>=8', '>1% in CN'] }]
    ]
}

webpack.prod.config.js

// webpack.prod.config.js
var webpack = require('webpack');
var HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
    entry: __dirname + '/src/main.js', // 入口文件路径文件所在的目录.
    output: {
        path: __dirname + '/build/',    // 存放打包后文件的路径
        filename: 'bundle.js'   // 打包后文件名
    },
    module: {
        rules: [
            {
                test: /\.js$/,
                loader: 'babel-loader',
                exclude: /node_modules/ // 编译打包时排除node_modules文件夹
            },
            {
                test: /\.css$/,
                // 此处结构需要做一下修改
                use: [
                    'style-loader', 'css-loader',
                    {
                        loader: 'postcss-loader',
                        options: {
                            importLoaders: 1,
                            plugins: [
                                require('autoprefixer')
                            ]
                        }
                    }
                ]
            }
        ]
    },
    plugins: [
        new HtmlWebpackPlugin({
            template: __dirname + '/src/index.html' // new一个插件的实例,并传入相关的参数
        })
    ]
};

http://www.niftyadmin.cn/n/1355294.html

相关文章

android source镜像源_Celadon快速上路指南Part2:编译Celadon镜像

一目了然 | Celadon 新手上路快速通道隆重揭晓 | 打开Celadon 的正确姿势上一期我们向您介绍了如何安装Celadon预编译镜像(Celadon快速上路指南 Part1:安装Celadon镜像),本期我们将向您介绍如何建立Celadon的开发环境,编译制作您自己的Cel…

未知高度元素内的垂直居中

高度为auto,被兄弟元素撑开的元素,需要内容垂直居中,这时vertical-align:middledisplay:inline-block;和定位、加上边距、设置行高等方式做垂直居中就不太好用了。这里用display:flex可以很好解决。 父元素…

python安装os模块_Python3.5内置模块之os模块、sys模块、shutil模块用法实例分析

本文实例讲述了Python3.5内置模块之os模块、sys模块、shutil模块用法。分享给大家供大家参考,具体如下: 1、os模块:提供对操作系统进行调用的接口 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:ZhengzhengLiu import os print(os.…

弹性布局justify-content:space-between;最后一行元素宽度不足时左对齐的几种处理方式

弹性布局justify-content:space-between;最后一行元素宽度不足时左对齐的几种方法 1.列数或总数固定不变(添加占位空元素) 想要的效果: 每一页固定十个元素,最后一页数量不足十时,从左到右从上到下依次排列…

“查看更多”功能,较完美的实现

“查看更多”功能&#xff0c;较完美的实现 需求&#xff1a; 文本过多时隐藏文本&#xff0c;用省略号代替&#xff0c;省略号后面有“查看更多”的按钮。 点击“查看更多”后展开所有文本&#xff0c;如下图&#xff1a; 点击“收起”后恢复原状。 实现 <div class&qu…

java rtf转doc_PDF转一切,永久免费

PDF格式是我们日常经常会用到的格式&#xff0c;它可以将文字、字型、格式、颜色及独立于设备和分辨率的图形图像等封装在一个文件中。文件占用小&#xff0c;转存方便&#xff0c;跨平台查看且不改变排版&#xff0c;支持矢量图形。但缺点也很明显&#xff0c;不能编辑&#x…

pythonppt_python操作ppt下载

这是python操作ppt&#xff0c;包括了python概述&#xff0c;python基础语法&#xff0c;Python数据类型&#xff0c;条件和循环&#xff0c;函数&#xff0c;模块&#xff0c;面向对象编程&#xff0c;文件相关等内容&#xff0c;欢迎点击下载。 python操作ppt是由红软PPT免费…

JS数字失真问题原理分析

问题&#xff1a; js存储数字类型变量时&#xff0c;数字位数过大时会失真。 原理&#xff1a; JS的数字类型&#xff1a;JS 遵循 IEEE 754 规范&#xff0c;采用双精度存储&#xff08;double precision&#xff09;&#xff0c;占用 64 bit&#xff0c;尾数52位。 因此Ja…