使用 webpack4.x 构建项目的步骤|学习笔记

简介: 快速学习使用 webpack4.x 构建项目的步骤

开发者学堂课程【React 入门与实战使用 webpack4.x 构建项目的步骤】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/585/detail/8077


使用 webpack4.x 构建项目的步骤


目录

一、运行 npm init -y

二、创建目录

三、在 src 下创建 index.html

四、使用 cnpm 安装

五、注意


创建基本的 webpack4.x 项目

1、运行 npm init -y

首先创建一个文件夹名位 01.webpack-base,在使用 Visual Studio Code 打开。打开之后我们要先快速初始化一个项目,代码:npm init -y。它会创建 package 配置文件。以后创建的包什么的都会在这里面来记录。

 

2、 创建目录

01.webpack-base 旁边有一个新建项目的(如下图:),

30ded0ea1958fe87a80c8cc52b3d567.jpg

新建一个 src 项目,用来存放所有项目的原代码。还有一个是 dist 文件,为什么使用 dist 因为 react 创建的时候/ dist 的路径,这个 dist 代表的是项目做好之后发布的一个产品,最终要发布在我们的 dist 里面中去,开源也是这样做的。

 

3、src下创建 index.html

src 下面新建一个 index.html,代码如下:

代码:

<! DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<meta http-equiv="X-UA-Compatible" content="ie=edge">

<title>Index首页</title>

</head>

<body>

<h1>这是首页</h1>

</ body>

</html>

src 下创建一个 main.js 文件,代码如下:

代码:

// 假设,main.js 还是我们的入口文件

Console.log(‘ok’)


4、使用 cnpm 安装

配置淘宝镜像,但是使用 npm 就直接自己装了,在终端安装。(代码如下:)

代码:

cnpm I webpack webpack-cli -D

*全局运行 ‘npm I cnpm -g

点开 package.json 查看版本:

代码:

"name": "01.webpack-base",

"version" : "1.0.0",              

"description": "",

"main": "index.js",

"scripts" : {

"test": "echo \"Error: no test specified\" && exit 1"},

"keywords": [],

"author": "",

"license": "ISC",

"devDependencies": {

"webpacki: "^4.1.1"

}

}

但是还是要去传一个包,代码:cnpm I webpack-cli -D

在终端输入,webpack 就可以进入打包空间。之前进入打包空间,在 package.json 创建一个 dev。在 script 里面添加一个“dev”:“webpack”,后面在指定一个配置文件。在终端里面输入 webpack或者在 package.json 里面的 script 中添加 dev,都是一样的。“dev”:“webpack”是 webpack 命令行提供的。重新在到终端打一次包,它就报了一次警告:

代码:

WARNING in configuration

The 'mode’ option has not been set. Set 'mode’option to

'development’ or 'production’to enable default:for this

environment.

打包失败!大概意思是:没有设置 mode 这个选项。Webpack 有一个配置文件,在 src 下创建 webpack.Config.js的一个 js 文件。Webpack.config.js代码如下:

代码:

//向外暴露一个打包的配置对象;因为 webpack 是基于 Node 构建的;所以  webpack 支持所有 Node API 和语法

module.exports = {

mode: 'development' //development production

}      

//行不行 目前不行

export default {}

然后在使用 webpack ,在报错。

代码:

ERR0R in Entry module not foundT Eror: Can't resolve './snc'

in 'c: lUsers\liulongbin\Desktoplreact-day八代

\e1.webpack-base'

这个主要报错的是没有找到入口文件,是因为在webpack.config.js中没有配置入口文件。

webpack 4.x中,有一个很大的特性,就是约定大于配置约定,默认的打包入口路径是src -> index.js

已经有了这个就不需要了,所以把 main.js 重新命名一下,改为 index.js。(代码如下:)

代码:

//假设,main.js 还是我们的入口文件

Console.log(“ok”)

就不用写 option ,它默认是把 src 下的 index.js 当作入口,然后在到终端里面去输入 webpack

然后结果为,下列代码:

Hash: 423ac0b62c60f9ef8e85Version: webpack 4.1.1

Time: 100ms

Built at: 2018-3-1910:57:03AssetsizeChunks    chunk Names

main.js2.85 KiBmain [emitted]main

Entrypoint main = main.js

[./ src/index.is142 bytes {main}「built]

文件打包好后会在 dist 中出现一个 js 文件,main.js 文件,可以打开观察一下。

然后把这个 js 文件手动导入进 index.html 中去,导入到 head 标签里面,导入这行代码,然后保存,在到浏览器中去看(如下图:)。

227d821c205756930831cf94e183dcb.jpg

webpack.config.js 中的 mode 中的 ok 改为 production ,然后在到终端打包,在卡 main.js 文件。

代码:

function(e) { var n=( } ;function r(t)if(n[t])return n[t].exports ;var o=n[t]=(i:t,T J,e嗟石} ;return e[t].call(o.exports,o ,o.exports ,r ) , o.1=!0 ,o.exports }r.m=e ,r.c=n,r.d=iunction(e,n,t){(r.o(e ,n)ll0bject.defineProperty(e,n , {configurable: !1,enumerable:! 0 ,get:t}) } ,r.z=function(e){bject.defineProperty(e , "_esModule" ,{value:!0}) } ,r.n=function(e) {var n=e&ke._esModule?function() {return e.default} : function() {return e) ;return r.d(n , " a " ,n) ,n} ,r.o=function(e,n){return Object.prototype .hasOwnProperty.call(e,n) } ,r.p="" ,r(r.s=0)( [function(e,n) {console.log("ok ")}]);

 

5、注意: webpack 4.x 提供了约定大于配置的概念;目的是为了尽量减少配置文件的体积;

默认约定了:

打包的入口是 src-> index.js

打包的输出文件是 dist-> `main.js |

相关文章
|
18天前
|
缓存 监控
webpack 提高构建速度的方式
【10月更文挑战第23天】需要根据项目的具体情况和需求,综合运用这些方法,不断进行优化和改进,以达到最佳的构建速度和效果。同时,随着项目的发展和变化,还需要持续关注和调整构建速度的相关措施,以适应不断变化的需求。
|
21天前
|
前端开发 JavaScript
手敲Webpack 5:React + TypeScript项目脚手架搭建实践
手敲Webpack 5:React + TypeScript项目脚手架搭建实践
|
18天前
|
存储 缓存 前端开发
利用 Webpack 5 的持久化缓存来提高构建效率
【10月更文挑战第23天】利用 Webpack 5 的持久化缓存是提高构建效率的有效手段。通过合理的配置和管理,我们可以充分发挥缓存的优势,为项目的构建和开发带来更大的便利和效率提升。你可以根据项目的实际情况,结合以上步骤和方法,进一步优化和完善利用持久化缓存的策略,以达到最佳的构建效果。同时,不断探索和实践新的方法和技术,以适应不断变化的前端开发环境和需求。
|
3月前
webpack——通过webpack-bundle-analyzer分析项目包占比情况
webpack——通过webpack-bundle-analyzer分析项目包占比情况
35 2
webpack——通过webpack-bundle-analyzer分析项目包占比情况
|
3月前
|
缓存 JSON JavaScript
简单介绍下从零搭建 Webpack 项目
本文详细介绍了Webpack中Loader的概念及其重要性。Webpack仅支持处理JS和JSON文件,而Loader能够帮助处理其他类型的文件,如CSS、图片等,并将其转换为有效的模块。文章首先解释了Loader的基本原理,接着介绍了几种常见Loader的配置和使用方法
22 1
|
3月前
|
前端开发 JavaScript API
|
3月前
|
前端开发 JavaScript C++
【绝技大公开】Webpack VS Rollup:一场前端工程化领域的巅峰对决,谁能笑到最后?——揭秘两大构建神器背后的秘密与奇迹!
【8月更文挑战第12天】随着前端技术的发展,模块化与自动化构建成为标准实践。Webpack与Rollup作为主流构建工具,各具特色。Webpack是一款全能型打包器,能处理多种静态资源,配置灵活,适合复杂项目;Rollup专注于ES6模块打包,利用Tree Shaking技术减少冗余,生成更精简的代码。Rollup构建速度快,配置简洁,而Webpack则拥有更丰富的插件生态系统。选择合适的工具需根据项目需求和个人偏好决定。两者都能有效提升前端工程化水平,助力高质量应用开发。
41 1
|
3月前
|
JavaScript 前端开发 API
解锁前端开发新境界:Vue.js携手Webpack,打造高效构建流程,你的项目值得拥有!
【8月更文挑战第30天】随着前端技术的发展,模块化与组件化趋势愈发显著。Vue.js 以其简洁的 API 和灵活的组件系统,深受开发者喜爱;Webpack 则凭借强大的模块打包能力成为前端工程化的基石。两者结合,不仅简化了组件编写与引用,还通过模块热替换、代码分割等功能大幅提升开发效率。本文将通过具体示例,展示如何利用 Vue.js 和 Webpack 构建高效、有序的前端开发环境。从安装配置到实际应用,逐步解析这一组合的优势所在。
49 0
|
3月前
|
JavaScript 测试技术
在不同 webpack 版本的 Vue 项目中配置 Storybook
在不同 webpack 版本的 Vue 项目中配置 Storybook
|
JavaScript 前端开发
WEBPACK简单学习笔记
WEBPACK简单学习笔记
148 0
WEBPACK简单学习笔记