webpack基础用法

李元芳
• 阅读 4951

----------webpack的用法全在配置中!!
webpack是在node环境下运行的,学习webpack之前,请先自行安装node环境(含npm);

安装webpack:

第一步:
    npm install -g webpack       //全局安装
第二步:
    建立项目文件夹,如“demo”
    cd demo
    npm init    //一直回车下去
    npm install webpack --save-dev    //项目目录本地安装

搭建目录结构

在项目根目录“demo”下的简单目录结构如下:
    --app
        --index.js    //入口文件
    --node_modules    //安装modules时,自动建立
    --tem    //HTML模板文件夹
        --index.html
    --webpack.config.js    //自建,不会自动生成;一般会有开发和发布两种配置文件
    --package.json    //由npm init时自动建立

webpack简单配置:

webpack的用法全部都在webpack.config.js中;其他地方不要夹杂webpack配置的内容;

//webpack.config.js写入以下内容
    //引入内置功能模块(不需要另行安装);
    var path = require('path'); 
    var webpack = require('webpack');
    //引入第三方功能模块(需要另行安装);

//关于第三方模块的用法,强烈建议直接看文档

    var HtmlWebpackPlugin = require('html-webpack-plugin');
    
    //定义常用路径变量;   
    //返回当前文件(webpack.config.js)所在位置
    var ROOT_PATH = path.resolve(__dirname); 
    var APP_PATH = path.resolve(ROOT_PATH,'app');    //拼接路径;
    var TEM_PATH = path.resolve(ROOT_PATH,'tem');
    var BUILD_PATH = path.resolve(ROOT_PATH,'build');
    
    module.exports = {
        entry : {
            //入口文件
            app : APP_PATH,
            vendors : ['react','react-dom']
        },
        output : {
            //产出路径;
            path : BUILD_PATH,
            filename : '[name].js'    
        },
        module : {
            //一切资源(images/css/js...)皆模块,一切需要loader解析;
            loaders : [
                {test:/\.js?$/,
                    loader:'jsx',
                    exclude:/node_modules/}
            ]
        },
        plugins : [
            //生成HTML文件;
            new HtmlWebpackPlugin({
                title : 'Hello world app!',
                template : path.resolve(TEM_PATH,'index.html'),
                filename : 'index.html',
                chunks : ['vendors','app'],
                inject : 'body',
                // chunksSortMode : "none"
            }),
            new webpack.HotModuleReplacementPlugin()    //保证实时刷新;
        ],
        devServer:{
            //实时刷新,需要inline model和hot:true
            histroyApiFallback : true,
            hot : true,
            inline : true,
            progress : true
        }
    }

注意:webpack分析webpack.config.js中的entry file到其他文件中查找依赖,所有文件被包含在bundle.js中;

webpack给每个module(注意:所有文件都是module,包括通过loaders进来的图片、css等)一个独立id;并使所有module在bundle.js中可以通过id访问;

启动时,只有entry chunk被执行;

webpack支持CMD和AMD规范,但不要在入口文件中使用AMD规范,会报错;

Development Server:

//Webpack搭建本地服务器,监听文件改变,整个页面实时更新;但是不会输出结果文件到磁盘,适于生产环境下调试;

//webpack-dev-server调用的脚本文件不是output的文件,而是保存在内存中的文件……目前引用的方法只知道用Html-webpack-plugin自动生成html页面来引用;

常用配置:

    plugins : [
        //保证实时更新,需要启用内置的HotModuleReplacementPlugin插件;
        new webpack.HotModuleReplacementPlugin()
    ],
    devServer:{
        //server切换到inline model
        histroyApiFallback : true,
        hot : true,
        inline : true,
        progress : true
    }

注意:webpack-dev-server允许内网访问------设置host 0.0.0.0
//webpack-dev-server是实现页面整体刷新;

//在package.json文件中配置"script"脚本设置快捷命令方式
//以下命令行参数不要和上边webpack.config.js中的配置有交集,好像会报错;
"scripts": {
    "start":"webpack-dev-server --colors --host 0.0.0.0 --port 8080"
  }
  使用命令行模式npm run start运行webpack-dev-server;

使用不同的配置build项目:

    //根据需求绑定不同的配置文件并设置scripts脚本运行方式;
  "scripts": {
    "start": "webpack-dev-server --hot --inline",
    "build": "webpack --progress --colors --config webpack.production.config.js"
  }

本人是初学者,有问题希望大家一起探讨,共同进步,谢谢;

实践是检验真理的唯一标准;可以看着入口文件和webpack.config.js,猜测应该出现的结果,然后再执行一下,检验一下;
推荐一篇文章

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
放学路上 放学路上
4年前
vscode+vue简单安装教程
1、安装vscode、node.js。2、打开vscode终端,全局安装vuecli:npminstallgvuecli用于构建项目。3、继续安装webpack(打包工具):npminstallgwebpack。4、安装完成创建一个文件夹用于存放项目,比如myvue,cd到该文件夹,使用项目创建命令:vueinitwebpackmyvue。
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
代码哈士奇 代码哈士奇
3年前
webpack5构建一个简单的vue项目 (练习)
webpack5构建vue必要环境安装ndejs我们需要安装node如果没有安装则安装安装过则跳过执行nodevnpmv初始化项目文件夹新建一个空的项目执行npminity初始化npminity会生成一个package.json安装webpack以及htmlwebpackplugin控制台执行npmiwebpackwebpackcliwebpackdevserverhtmlwebpackpluginD安装babelloaderbabel可以将我们的代码向下
Jacquelyn38 Jacquelyn38
4年前
React.js中JSX的原理与关键实现
在开始开发之前,我们需要创建一个空项目文件夹。安装1.初始化npm init y2.安装webpack相关依赖npm install webpack webpackcli D3.安装babelloader相关依赖npm install babelloader @babel/core @babel/presetenv D4.
Easter79 Easter79
3年前
TypeScript 文件引入 Html (ts import html webpack)
我们的目标是把html引入ts文件,webpack打包时就能把html打进js文件,减少文件加载啦1安装textloadernpminstalltextloadersavedev2webpack配置里新增textloader为文本加载器module:{rules:
可莉 可莉
3年前
18个常用 webpack插件,总会有适合你的!
!(https://oscimg.oschina.net/oscnet/71317da0c57a8e8cf5011c00e302a914609.jpg)来源| https://github.com/Michaellzg/myarticle/blob/master/webpack/Plugin何为插
Stella981 Stella981
3年前
IE9样式错乱,IE11无法正常加载v
1.第一步:安装babelployfill(已安装请跳过此步骤)yarnaddbabelployfill2.修改webpack打包配置文件:webpack.bash.conf.js//引入babelployfillvarbabelPloy