webpack4 在2018年就已经发布了, 相比webpack3,webpack4需要的配置减少了很多,对入口和出口配置都有默认设置可以不用手动设置,但还是要在webpack.config.js中配置一些会用到的插件。

这段时间学习webpack4,特整理笔记如下,记录用webpack4构建基本项目的过程,如有误欢迎指正!

参考:https://www.html.cn/archives/9436


先上一下配置文件,里面有相关版本号,特别要注意的是babel-core和babel-loader的版本,会有不兼容的情况:


1.首先新建项目目录

  • 新建src文件夹和dist文件夹
  • 在src文件夹下新建html、css、js、image文件夹,新建index.html和index.js作为入口文件(index.js是webpack4中的默认入口文件,编译后会在dist文件夹下生成main.js文件
  • 执行命令 npm init 初始化项目,生成package.json文件

完成上述后项目目录如下:


2.接下来安装配置webpack4

  • 执行命令1: cnpm i webpack@4.39.1 --save-dev
  • 执行命令2:cnpm i webpack-cli@3.3.6 --save-dev

Tip:可以在@后面指定版本号

  • 然后在package.json文件中添加一个脚本命令
 
 "scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack --mode production", },

保存并运行命令 npm run build 

注意webpack4中默认以index.js为入口文件进行编译打包,如果刚才没有新建index.js则会报错。当然也可以指定入口文件

运行命令成功后会在dist目录下生成一个main.js文件(这个main.js会在index.html中默认引入,实际存在内存中所以看不到)

刚才运行的 npm run build命令是在默认模式下进行打包的,webpack4新增了一个特性就是 production(生产)和 development(开发)模式。两者的区别是,前者打包后的文件是压缩的,而后者这是没有压缩的

通过在package.json中配置不同命令来切换打包模式:

"scripts": {
"dev": "webpack --mode development",
"build": "webpack --mode production"
}

然后可以通过运行不同命令来切换打包模式

  • npm run build 
  • npm run dev

3.下一步安装webpack-dev-server来热更新webpack

  • 运行命令cnpm i webpack-dev-server --save-dev
  • 成功之后在package.json中增加如下代码:
"scripts": {
"start": "webpack-dev-server --mode development --open",
}

也可以在这条命令中设置默认开启的浏览器和是否热更新,默认开启端口等选项:

"start": "webpack-dev-server --mode development --open firefox --port:8020 --hot --host 127.0.0.1"

完成后保存,运行之后会自动打开浏览器进入页面


4.接下来安装配置Babel来转译ECMA5以上的JavaScript代码

以上步骤都不需要像webpack3一样在webpack.config.js中动手动脚,但配置babel还是要新建一个webpack.config.js文件

  • 执行命令 cnpm i babel-core babel-loader babel-preset-env --save-dev (如果有提示版本警告 建议参考文章头部提供的版本号)
  • 在根目录新建.babelrc,输入如下内容
    {
    "presets": [
    "env"
    ]
    }
  • 在根目录中新建webpack.config.js文件,输入如下内容(如果要自定义入口出口,则要自己再配置一下)
    module.exports = {
    module: {
    rules: [
    {
    test: /\.js$/,
    exclude: /node_modules/,
    use: {
    loader: "babel-loader"
    }
    }
    ]
    }
    };

    接下来可以在index.js中手写一些ES6语法的代码来测试一下

5.安装插件:html-webpack-plugin 和 html-loader来处理html

通过安装这两个插件来处理HTML

  • 执行命令

    cnpm i html-webpack-plugin html-loader --save-dev
  • 然后更新webpack.config.js配置
    const HtmlWebPackPlugin = require("html-webpack-plugin");
    module.exports = {
    module: {
    rules: [
    {
    test: /\.js$/,
    exclude: /node_modules/,
    use: {
    loader: "babel-loader"
    }
    },
    {
    test: /\.html$/,
    use: [
    {
    loader: "html-loader",
    options: { minimize: true }
    }
    ]
    }
    ]
    },
    plugins: [
    new HtmlWebPackPlugin({
    template: "./src/index.html",
    filename: "index.html"
    })
    ]
    };
  • 如果前面创建了index.html,则运行
    npm run build

    否则新建index.html再运行命令,成功后会发现在dist目录中多了一个index.html文件


做到这里项目的架构已经基本完成了,如果还要还要打包CSS文件可以使用用 mini-css-extract-plugin 等插件,具体请参考 https://www.html.cn/archives/9436

文章可能有一些写的不到位的地方,敬请谅解,欢迎指正!

学习整理:用webpack4.x构建基本项目的更多相关文章

  1. Maven学习:Eclipse使用maven构建web项目(转)

    Maven学习:Eclipse使用maven构建web项目(转) 8.更改class路径:右键项目,Java Build Path -> Source 下面应该有4个文件夹.src/main/j ...

  2. SpringBoot学习笔记(一)——构建springboot项目

    生成一个SpringBoot的项目 开发和学习SpringBoot需要一个生成好的SpringBoot项目. 1.可以使用一些IDE(Integrated Development Environmen ...

  3. Maven学习日记(一)----构建web项目

    创建maven-web项目: dos进入workspace目录: D:\workspace>mvn archetype:create -DgroupId=org.sonatype.mavenbo ...

  4. maven学习(4)-Maven 构建Web 项目

    紧接着上一节(3),现在maven新建web项目,user-web.模拟一个用户登录的需求: 工程结构: pom.xml: <project xmlns="http://maven.a ...

  5. 使用 TensorFlow 构建机器学习项目中文版&#183;翻译完成

    原文:Building Machine Learning Projects with TensorFlow 协议:CC BY-NC-SA 4.0 不要担心自己的形象,只关心如何实现目标.--<原 ...

  6. (转)Maven学习总结(八)——使用Maven构建多模块项目

    孤傲苍狼只为成功找方法,不为失败找借口! Maven学习总结(八)——使用Maven构建多模块项目 在平时的Javaweb项目开发中为了便于后期的维护,我们一般会进行分层开发,最常见的就是分为doma ...

  7. (转)Maven学习总结(三)——使用Maven构建项目

    孤傲苍狼 只为成功找方法,不为失败找借口! Maven学习总结(三)——使用Maven构建项目 maven作为一个高度自动化构建工具,本身提供了构建项目的功能,下面就来体验一下使用maven构建项目的 ...

  8. Maven学习- 使用Maven构建Web项目

    从网上查了一些资料,才算明白(也就是怎么操作吧),怎么使用Maven构建一个Web项目,找到一篇文档,主要都是从这里学到的: 下载地址:使用Eclipse构建Maven的Web项目.docx 现自己在 ...

  9. vue.js学习之 如何在手机上查看vue-cli构建的项目

    vue.js学习之 如何在手机上查看vue-cli构建的项目 一:找到config文件夹下的index.js文件,打开后,将host的值改为你本地的ip,保存后重启项目 二:输入ip和端口号打开项目 ...

随机推荐

  1. hdu6395 Sequence(分段矩阵快速幂)

    Sequence 题目传送门 解题思路 可以比较容易的推出矩阵方程,但是由于p/i向下取整的值在变,所以要根据p/i的变化将矩阵分段快速幂.p/i一共有sqrt(p)种结果,所以最多可以分为sqrt( ...

  2. 开源项目托管到GitHub上

    前提是安装了git客户端 1.进入你的GitHub账户 2.点击new repositories   创建一个新的项目 输入项目名和项目描述   3.复制该项目的https路径 4.找一个文件夹来存放 ...

  3. 用户体验要素——产品系统设计方法

    用户体验已经成为了每个互联网人的口头词,特别是互联网产品经理或产品设计师. 的确,对于任何一个互联网产品而言,体验都是非常重要的. 但是具体的用户体验到底指的是哪些方面,界面,UI,还是交互,其中到底 ...

  4. XSS危害——session劫持(转载)

    在跨站脚本攻击XSS中简单介绍了XSS的原理及一个利用XSS盗取存在cookie中用户名和密码的小例子,有些同学看了后会说这有什么大不了的,哪里有人会明文往cookie里存用户名和密码.今天我们就介绍 ...

  5. 虚IP解决程序连只读服务器故障漂移

    目前公司有一套核心交易数据库配置了AlWaysON,SQL 2012版本, 1主4从, 其从库(8,14, 8.15) 这2台只读的从数据库服务器, 后台程序和wms等很多程序,都是直接配置IP连接这 ...

  6. 【iOS】Xcode 使用 CocoaPods 导入第三方库后没有提示

    Github 上下载的开源项目,运行后出现的 [iOS]build diff: /../Podfile.lock: No such file or directory 解决后,又出现了这个问题. 解决 ...

  7. Zabbix 中使用 Percona Monitoring Plugins 监控 MySQL

    1.先安装agent客户端 tar zxvf zabbix-3.2.6.tar.gz cd zabbix-3.2.6 ./configure --prefix=/data/zabbix --enabl ...

  8. 当面对会反制遭破解装置的App该如何顺利提取数据

    在检测App的过程之中,总会遇到比较棘手的,以”侦测是否遭破解的装置”为例,便会是个不好处理的状况.当App具备侦测装置是否已遭Root时,一旦发现装置已遭破解,便会停止运行,等于是只准安装及运行在未 ...

  9. Something wrong with EnCase v8 index search results

    My friend told me that she installed EnCase v8.05 on her workstation which OS version is Win 10. She ...

  10. 使用ForkJoinPool来多线程的拆分任务,执行任务,合并结果。

    ForkJoinPool 是jdk1.7 由Doug Lea 写的实现   递归调用任务拆分,合并,的线程池. 代码示例: package www.itbac.com; import com.alib ...