webpack初体验

前提: 确保有node跟webpack

1.创建一个文件(webpack-demo),cmd进入控制台,使用指令npm init 会在项目中生成一个package.json文件。

2.在项目中安装webpack,在cmd中执行npm install --save-dev webpack。

这时候项目的初始化就完成,开始第一个demo。

在根目录先创建一个app文件夹一个public文件夹。在app文件夹内创建main.js以及Greeter.js,在public文件夹内创建index.html。

 

webpack简单打包指令:webpack { 打包文件 } -o { 文件位置 }。

在cmd执行 webpack app/main.js -o public/bundle.js 

执行成功会在public文件夹中生成一个bundle.js文件。

通过配置文件使用webpack:

在跟目录创建webpack.config.js文件。

 这时候只需要在cmd中执行webpack命令。这条命令会自动引用webpack.config.js文件中的配置项。

更快捷的方式:配置我们一开始创建的package.json文件。npm可以引导任务执行,对npm进行配置后就可以更简单的使用。

在scripts中添加"start": "webpack"。

配置成功后在cmd中执行npm start 即可成功。

webpack功能:

source Maps(只应该在开发阶段使用)

 使用webpack构建本地服务器:

 

在package.json中的scripts对象中添加如下命令:

 执行npm run server即可在本地8080端口查看结果。

loaders:

通过使用不同的loader,webpack有能力调用外部的脚本或工具,实现对不同格式的文件的处理。比如scss转换为css。

loaders需要单独安装并且需要在webpack.config.js中的module关键字下进行配置。

配置项:

test:一个用以匹配loaders所处理文件的拓展名的正则表达式(必须)

loader: loader的名称(必须)

include/exclude:手动添加必须处理的文件(文件夹)或屏蔽不需要处理的文件(文件夹)(可选)

query:为loaders提供额外的设置选项(可选)

 使用Babel:

Babel是几个模块化的包,其核心功能位于称为babel-core的npm包中,webpack可以把其他不同的包整合在一起使用,对于每一个你需要的功能或拓展你都需要安装单独的包(解析es6的babel-env-preset,解析jsx的babel-prest-react比较用常用)

先安装babel需要的一些依赖包: babel-core babel-loader babel-preset-env babel-preset-react

在安装babel-loader时要注意版本。

 安装完成后在webpack.config.js中配置babel。

 现在demo已经已经可以使用es6以及react。

尝试去将项目改写成react:

先安装react以及react-dom。

在app文件下创建一个config.json文件。

 改写Greeter.js文件以及main文件

 执行npm run server 就可以在8080端口查看到结果了。

优化webpack.config.js的配置。

babe具有非常多的配置项,可以将babel的配置放到一个名为.babelrc的文件中。

 

css:

webpack提供了两个工具处理样式表,css-loader和style-loader。css-loader使代码可以使用类似@import和url(...)的方法实现require()的功能,style-loader将所有的计算后的样式加入页面,二者结合可以使样式表嵌入到webpack打包后的js文件中。

安装css-loader以及style-loader

 在app文件夹下创建一个名字为main.cssd的文件

 再在main.js文件中使用import引入

 css-module:(避免css全局污染)

ps: 使用loaclIdentName报错  没有loaclIdentName属性。

app文件夹下创建一个Greeter.css文件

 导入.root到Greeter.js文件中

 npm run server 后可以在8080端口查看结果

插件(Plugins):

plugins是用来拓展webpack的功能的,会在整个构建过程中生效,执行相关任务。loaders是在打包构建过程中处理源文件的(jsx,scss,less)一次次处理一个,插件并不直接操作单个文件,它对整个构建过程起作用。

html-webpack-plugin:

先对HtmlWebpackPlugin插件进行安装:npm install --save-dev html-webpack-plugin。

移出public文件夹,利用此插件,index.html文件会自动生成,此外css已经通过前面的操作打包到js中了。

在app目录下创建一个index.tmpl.html文件模板,这个模板包含title等必须元素,在编译过程中插件会依据此模板生成最终html页面,会自动依赖js,css等文件。

index.tmpl.html代码如下:

修改webpack.config,js文件,并新建一个build文件夹用来存放最终输出文件

 

 再次执行npm start进行打包时会发现build文件夹下生成了bundle.js以及index.html

转自https://www.jianshu.com/p/42e11515c10f,自己跟着做了一边,使用的webpack版本为4.40.2有些指令已经改变了,自己写下来用于记录。

posted @ 2019-09-17 15:28  素昧平生97  阅读(178)  评论(0编辑  收藏  举报