Webpack --- 模块打包器

Webpack是一款模块加载器兼打包工具,它能把各种资源,例如JS(含JSX  javascript xml)、coffee、样式(含less/sass/css)、图片等都作为模块来使用和处理。我们可以直接使用 require(XXX) 的形式来引入各模块,即使它们可能需要经过编译(比如JSX和sass),但我们无须在上面花费太多心思,因为 webpack 有着各种健全的加载器(loader)在默默处理这些事情。

  1. 安装  

cnpm i webpack -g      全局安装

cnpm i webpack -D     局部安装

以下为[email protected]

在项目文件夹下执行npm init,进行初始化,得到package.json文件

安装过程中-D表示开发依赖 devDependencies-S表示生产依赖或项目依赖 dependencies

  2. webpack初步  

新建entry.js文件,这个文件为入口文件,在这个文件中可以引入require()多个模块文件。

命令执行   webpack entry.js bundle.js   进行打包,打包后所有模块文件将在bundle.js文件中显示

html文件可以直接script引入bundle.js

  3. 引入样式文件  

在入口文件中不能直接引入css文件,因为不是一个模块,一个js文件为一个模块。如果加载css文件需要借助加载器loader

安装  npm i style-loader css-loader -D

文件引入 require("style-loader!css-loader!./index.css")

style-loader 代表把css样式代码转为js字符串的node样式代码

css-loader 转译css为commonJS模块 方便导入

./index.css  为css文件名

如果说要引入sass文件或者less文件,也需要下载对应的loader

安装 cnpm i sass-loader node-sass less-loader less -D

此处版本为sass-loader@7

文件引入require("style-loader!css-loader!sass-loader!./main.scss")

  4. 关于webpack.config.js配置文件  

 1 module.exports = {
 2     entry:'./entry.js', //入口文件
 3     output:{ //打包的出口文件
 4         path:__dirname,//根路径
 5         filename:"bundle.js",//打包文件
 6     },
 7     module:{  //需要打包的模块(js css less sass png ...)
 8         loaders:[    
 9             {
10                 test:/\.css$/,  //css文件名
11                 use:["style-loader","css-loader"]
12             },
13             {
14                 test:/\.less$/,
15                 use:["style-loader","css-loader","less-loader"]
16             },
17             {
18                 test:/\.scss$/,
19                 use:["style-loader","css-loader","sass-loader"]
20             },
21         ]
22     }
23 }

以上配置文件书写完成以后,直接命令执行webpack,自动打包;样式文件引入直接写目录下的文件名即可。

  5. 关于调试  

所有文件都在entry.js中,为了便于调试(未打包之前目录)

安装 npm i source-map -D

执行 webpack --devtool source-map

为了方便启动,可以直接在配置文件写入以下内容,命令输入webpack自动执行

devtool:"source-map"

  6. ES6转ES5  

在服务端ES6需要转成ES5,babel.js文件将会把es6转为es5。

我们在进行接口暴露的时候

ES5接口暴露

单一接口暴露 module.exports = user     引入 var user = require('./user.js')

一个模块暴露多个接口 exports.msg = '字符串'   exports.arr = [1,2]    引入 var { msg,arr } = require('./many.js')

ES6接口暴露

单一默认暴露   export default likes     引入 import love from "./f.js"

一个模块暴露多个 export const a = 'aaa'  export let b = 'bbb'   引入 import {a,b} from "./m.js"

安装 npm i babel-loader babel-core babel-preset-env -D

babel-loader babel-core版本不能相差2以上

配置文件写入

 新建 .babelrc 文件写入

  7. 启动服务插件  

自动刷新,修改后无需重新打包

全局安装  npm i [email protected] -g

局部安装  npm i [email protected] -D

执行 webpack-dev-server --inline --hot

为了方便启动,可以在package.json文件写入,命令执行 npm start 即可启动

猜你喜欢

转载自www.cnblogs.com/yznotes/p/12923290.html