1.nodejs环境,建议下载v8.2以上版本的,低版本怕是有些api已经废弃,链接附上(https://npm.taobao.org/mirrors/node/)

2.网上一些教程有的是webpack3.x的 npm install webpck -D 这样下载的是最新版,也就是webpack4.x,4.x版本有些配置还是跟3.x的有区别的

3.我这里选择4.x版本的

4.webpack4.x版本默认的entry入口文件夹是src

(1)创建好webpack-test项目根目录(这里注意根目录命名不能是webpack,因为会跟后面要下载的webpack冲突),

(2)创建src文件夹,src文件夹放idnex.html、index.js文件

(3)执行npm init 一路回车 创建package.json文件

5.执行npm i webpack webpack-cli -D

这条指令的意思是:下载webpack 跟webpack-cli 并创建package.json的开发环境依赖,(webpack4.x开始必须另外下载webpack-cli)

(npm install webpack --save-dev、npm install webpack-cli  --save-dev 这两条指令简写并且合并成 就等于npm i webpack webpack-cli -D)

有必要在说明下为什么不是npm install webpack --save,而是npm install webpack --save-dev

一般对于一个项目来说,就必须涉及到开发环境跟生产环境(线上环境),一些依赖包要跟着发布到线上 那就用npm install webpack --save

这里我们的webpack跟webpack-cli包是作为代码打包工具,只是负责打包代码,而我们只需要把打包好的代码放到生产环境上,仅此而已!因此这两个包只需要在开发环境使用就行

打开package.json文件可以在devDependencies(开发环境依赖包放在这里)属性看到安装的那两个包  ----------------【dependencies(生产环境依赖包放在这里)】

6.先以webpack4.x默认的配置打包代码,

在当前项目根目录下打开cmd运行打包指令 npx webpack

webpack会自动在根目录下生成dist文件夹跟main.js,文件里面的内容就是index.js被webpack打包后的代码,

如果想看到不被混淆的代码 可以执行 npx webpack --mode development

我们把main.js引入到index.html中 用浏览器打开index.html文件,调试模式下console面板将会看到输出的helloworld,就说明打包后的js文件是可以正常执行的!

7.以默认配置来打包我们的代码肯定是满足不了用户实际需求的,这就要我们结合webpack文档来自己配置打包参数

我们先在项目根目录下创建webpack.config.js ,并以webpack官方文档作为参考,来进行配置

8.执行 npx webpack打包代码,这时候,就会在根目录下生成dist文件夹,这是我们配置的输出目录,里面存放所有打包好的文件

在index.html页面上手动引用它,如果想自动引用,就必须另外用插件来实现

这时候html-webpack-plugin插件就派上用场了。也安一下 npm install html-webpack-plugin -D

附上代码:

const path = require('path');
let HtmlWebpackPlugin = require('html-webpack-plugin'); // 这里导入HtmlWebpackPlugin插件
module.exports = {
entry: { // 指定一个入口文件 (也可指定多个)
index:'./src/index.js',
},
mode:'development', // 不会压缩代码 production 压缩代码
output: { // 出口文件
// 指定文件名跟输出文件到哪个位置
filename: '[name].js', //这里的name就是entry的index
path: path.resolve('dist')
},
plugins: [
// 通过new一下这个类来使用插件
new HtmlWebpackPlugin({
// 在src目录下创建一个index.html页面当做模板来用
template: './src/index.html',
filename:'index.html', //打包输出的html文件名
chunks:['index'] // 引用 entry 的index:'./src/index.js' 打包后的index.html 就会自动引用打包好的index.js
})
]
}

9. npx webpack打包代码

这时候,dist文件夹就会生成两个文件,一个是index.html,一个是index.js

打开index.html 就会看到index.js已被自动引入

10.但如果在src下有其他文件也需要打包呢?往下看!

const path = require('path');
let HtmlWebpackPlugin = require('html-webpack-plugin'); // 这里导入HtmlWebpackPlugin插件
module.exports = {
entry: { // 指定多个入口
index:'./src/index.js',
login:'./src/login.js',
},
mode:'development', // development-->不会混淆代码 production---->混淆代码
output: { // 出口
// 指定文件名跟输出路径
filename: '[name].js', //这里的name就是entry的index跟login
path: path.resolve('dist')
},
plugins: [
new HtmlWebpackPlugin({
// 引用src目录下的index.html页面当做模板
template: './src/index.html',
filename:'index.html', //打包后的模板文件名
chunks:['index'] // 引用 entry 的index:'./src/index.js' 打包后index.html就会自动引用index.js
}),
new HtmlWebpackPlugin({
// 应用src目录下的login.html页面当做模板
template: './src/login.html',
filename:'login.html', //打包输出的模板文件名
chunks:['login'] // 引用 entry 的login:'./src/login.js' 打包后login.html 就会自动引用login.js
})
]
}

11.npx webpack

12.如果想两个html共用index.js

·················END································

webpack一些简单的使用先写到这样,css、图片的打包跟压缩会另外写一篇。

【注】

看网上别人有说直接在cmd上运行webpack就能打包,但我自己试了,是会提示:“无法将“webpack”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。”

这是因为webpack、webpack-cli不是全局安装 ,必须 全局安装 npm i webpack webpack-cli -g (webpack 4.x版本后还必须安装webpack-cli)

如果你不想全局安装webpack、webpack-cli ,可以在package.json文件配置命令,以后直接 运行npm run build 就相当于执行webpack命令打包代码

webpack4.x初使用的更多相关文章

  1. webpack4配置详解之常用插件分享

    前言 继上一次webpack的基础配置分享之后,本次将分享一些工作中项目常用的配置插件.也会包含一些自己了解过觉得不错的插件,如有分析不到位的,欢迎纠错,嗯,这些东西文档都有,大佬可绕过. Wepac ...

  2. webpack4+vue2+axios+vue-router的多页+单页混合应用框架

    VUE2的单页应用框架有人分享了,多页应用框架也有人分享了,这里就分享一个单页和多页的混合应用框架吧,初现雏形,还有很多需要优化和改善的地方... 结尾有github地址. 项目结构 │ ├─buil ...

  3. 详解webpack4打包--新手入门(填坑)

    注意,这个dev和build好像在哪儿见过??对了, 刚刚才在package.json里配置的“scripts”这一项的值就有“dev”和“build”.对,一点都不错,就是这2个值,这2个值代表的是 ...

  4. webpack4入门到进阶案例实战课程

    愿景:"让编程不在难学,让技术与生活更加有趣" 更多教程请访问xdclass.net 第一章 webpack4前言 第一集 webpack4入门到进阶案例实战课程介绍 简介:讲述w ...

  5. .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验

    不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...

  6. Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验

    Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...

  7. Spring之初体验

                                     Spring之初体验 Spring是一个轻量级的Java Web开发框架,以IoC(Inverse of Control 控制反转)和 ...

  8. 【初码干货】使用阿里云对Web开发中的资源文件进行CDN加速的深入研究和实践

    提示:阅读本文需提前了解的相关知识 1.阿里云(https://www.aliyun.com) 2.阿里云CDN(https://www.aliyun.com/product/cdn) 3.阿里云OS ...

  9. Xamarin.iOS开发初体验

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAAA+CAIAAAA5/WfHAAAJrklEQVR4nO2c/VdTRxrH+wfdU84pW0

随机推荐

  1. 初印象至Vue路由

    初印象系列为快速了解一门技术的内容,后续会推出本人应用这门技术时发现的一些认识. Vue路由和传统路由的区别: Vue路由主要是用来实现单页面应用内各个组件之间的切换,同样支持传递参数等功能.而传统路 ...

  2. 01-Linux的基本指令

    Linux的基本指令 基础指令(重点) 1.ls指令: 含义:ls(list) 用法1:#ls 含义:列出当前工作目录下的所有文件/文件夹的名称 用法2:#ls  路径 含义:列出指定路径下的所有文件 ...

  3. odoo开发笔记--模型字段compute用法

    compute属性,实现的主要功能是,前端界面选择某个字段的时候,指定与该字段关联的其他字段可以关联,并联动的显示. 可以和inverse属性同时使用,不加inverse属性的话,前端界面的显示效果只 ...

  4. 前端代码质量保障之代码review

    经验丰富的程序员和一般程序员之间的最大区别,不仅体现在解决问题的能力上, 还体现在日常代码的风格上.掌握一门技术可能需要几月,甚至几周就够了. 好的习惯风格养成却需数年. 团队成员之间需要合作,代码需 ...

  5. One-hot数据处理

    机器学习 数据预处理之独热编码(One-Hot Encoding)(转) 问题由来 在很多机器学习任务中,特征并不总是连续值,而有可能是分类值. 例如,考虑一下的三个特征: ["male&q ...

  6. nginx配置文件 nginx.conf 说明

    #user nobody; #开启进程数 <=CPU数  worker_processes 1; #错误日志保存位置 #error_log logs/error.log; #error_log ...

  7. Android入门学习总结

    1.Manifest.xml是程序运行时读取的文件,是核心的配置文件:也是从中读取Activity 2.主要的代码文件存放在MainActivity.java,里面固定会有onCreate函数会通过s ...

  8. IC 设计中DFT的Boundary Scan功能

    在很大规模的IC设计中,往往会有一些各种各样的bug出现,不论是在前期design的过程,还是在post silicon流片回来chip的flaw,都会导致chip的功能的失败,时钟频率无法达到期望频 ...

  9. 【K8S学习笔记】Part3:同一Pod中多个容器间使用共享卷进行通信

    本文将展示如何使用共享卷(Volume)来实现相同Pod中的两个容器间通信. 注意:本文针对K8S的版本号为v1.9,其他版本可能会有少许不同. 0x00 准备工作 需要有一个K8S集群,并且配置好了 ...

  10. Spring-Task思维导图

    最近在搞一个定时任务的相关东西,为了方便记忆,这里将知识点总结成一个思维导图.后续也会通过思维导图的方式发布博客.