webpack配置文件常用配置项介绍

1.webpack有一个默认的配置文件webpack.config.js,这个文件需要手动的创建,位于项目根目录中。可以为一个项目设置多个配置文件,已达到不同的配置文件完成不同的功能。怎么设置后面介绍。

2.webpack的配置文件会暴露出一个对象,格式如下:

module.exports = {

//配置项

}

3.常用配置项将要说明

entry:打包的入口文件,一个字符串或者一个对象

output:配置打包的结果,一个对象

fileName:定义输出文件名,一个字符串

path:定义输出文件路径,一个字符串

module:定义对模块的处理逻辑,一个对象

loaders:定义一系列的加载器,一个数组

[

      {

           test:正则表达式,用于匹配到的文件

              loader/loaders:字符串或者数组,处理匹配到的文件。如果只需要用到一个模块加载器则使用

               loader:string,如果要使用多个模块加载器,则使用loaders:array

                include:字符串或者数组,指包含的文件夹

                exclude:字符串或者数组,指排除的文件夹

      }

]

resolve:影响对模块的解析,一个对象

extensions:自动补全识别后缀,是一个数组

plugins:定义插件,一个数组


4.entry详细说明

(1)当entry是一个字符串时,这个字符串表示需要打包的模块的路径,如果只有一个要打包的模块,可以使用这种

形式

(2)当entry是一个对象

a.是数组时,当需要将多个模块打包成一个模块,可以使用这个方式。如果这些模块之间不存在依赖,数组中

值的顺序没有要求,如果存在依赖,则要将依赖性最高的模块放在最后面。

例如:entry:["./app/one.js",".app/two.js"]

b.是键值对形式的对象是,当需要分别打包成多个模块时,可以使用这种方式,例如;

entry:{

module1:"./app/one.js",

module2:["./app/two.js","./app/three.js"]

}

注:当entry是一个键值对形式的对象时,包名就是键名,output的filename不能是一个固定的值,因为每个包的

名字不能一样

5.output详细说明

(1)output是一个对象

(2)output.filename:指定输出文件名,一个字符串。当输出一个文件,output.filename为一个确定的字符串

如:output:{

filename:"build.js"

}

当输出多个文件,output.filename不能为一个确定的字符串。为了让每个文件有一个唯一的名字,需要用到下面

的变量

[name] is replaced by the name of the chunk.对应entry的键名

[hash] is replaced by the hash of the compilation.

[chunkhash] is replaced by the hash of the chunk.

如:output:{

path:'./build/',

fialname:'[name].js'

}

(3)output.path:指定输出文件的路径,相对路径,一个字符串

(4)output中还有其他的一些值,不在这里说明,可以在webpack的官方网站中获得更多的详细信息

6.module.loaders详细说明

(1)module是一个对象,定义对模块的处理逻辑

(2)module.loaders是一个数组,定义一系列加载器,这个数组中的每一项都是一个对象

(3)module.loaders:

          [

                  {

                              test:正则,用于匹配要处理的文件

l                              oader/loaders: 字符串或者数组, 如果只需要用到一个模块加载器 ,

                                则使用loader:string,

                                如果要使用多个模块加载器,则使用loaders:array

                                include:字符串或者数组,指包含的文件夹

                                  exclude:字符串或者数组,指排除的文件夹

                    }

          ]

(4)module除了可以配置loaders以外还能配置其他的值,在webpack的官网中获得更多的信息

7.resolve.extensions详细说明

(1)resolve.extensions并不是必须配置的,当不配置时,会使用默认值

["", ".webpack.js", ".web.js", ".js"],当手动为resolve.extensions设置值,

它的默认值会被覆盖

(2)如果你想要每个模块都能够按照它们自己扩展名正确的被解析,要在数组中添加一个空字符串。

(3)如果你想请求一个js文件但是在请求时不带扩展(如:require('somecode')),那么就需要

将'.js'添加到数组中。其他文件一样

(4)resolve还有其他的配置项,在webpack的官网获得更多信息

8.补充

(1)当设置了配置文件后,在命令行中输入webpack就可按照默认配置文件中的配置项打包模块了。

(2)设置多个webpack配置文件。

              webpack默认的配置文件是webpack.config.js,当在命令行中输入webpack时默认找的是  webpack.config.js。

              通过在package.json的scripts中添加例如

              "start-html":"webpack --config webpack.html.config.js"

在命令行中输入npm run start-html查找的就是webpack.html.config.js,通过这种方式可以实现不同的

配置文件有不同的用处,这样就不用反复修改同一个配置文件

webpack-dev-server

1.webpack-dev-server是一个轻量级的服务器,修改文件源码后,自动刷新页面将修改同步到页面上

2.安装webpack-dev-server:

全局安装:npm install webpack-dev-server -g

在项目中安装并将依赖写在package.json文件中:npm install webpack-dev-server --save-dev

3.使用命令webpack-dev-server --hot --inline完成自动刷新

4.默认的端口号是8080,如果需要8080端口被占用,就需要改端口,webpack-dev-server --port 3000(将端口号改为3000)

5.安装webpack-dev-server后就可以在命令行中输入webpack-dev-server开启服务,然后在浏览器地址栏中

输入localhost:端口号,就可以在浏览器中打开项目根目录的index.html文件,如果项目根目录中没有index.html

文件,就会在浏览器中列出项目根目录中的所有的文件夹。

6.第五条只是启动服务并不能自动刷新,要自动刷新需要用到webpack-dev-server --hot --inline

7.当使用webpack-dev-server --hot --inline命令时,在每次修改文件后,是将文件打包

8.每一次都敲一长串命令太麻烦,在项目根目录的package.json文件的scripts配置中添加配置,如

         "build":"webpack-dev-server --hot --inline",然后在命令行中输入 npm run build就能

          代替输入一长串命令(webpack-dev-server --hot --inline),

          运行webpack-dev-server --hot --inline默认是找webpack.config.js,通过--config命令可以修改为另一个配置文件。例如:webpack-dev-server --hot --inline --config  'webpack.es6.config.js'

9.配置根目录

(1)当在命令行中输入webpack-dev-server --hot --inline,再在浏览器中输入localhost:端口号,浏览器会在项目的

根目录中去查找内容,通过--content-base可以配置根目录。

如webpack-dev-server --hot --inline --content-base './build/',

在build文件夹中去加载index.html,如果没有

index.html文件,将会在浏览器中显示所有build目录下的文件和文件夹

四.例子

我一个设置了两个webpack的配置文件分别是webpack.config.js和webpack.react.config.js。package.json文件中scripts对象的内容如下:

"scripts": {

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

"react": "webpack --config webpack.react.config.js",

"build": "webpack-dev-server --hot --inline --content-base ./build/",

"build-react": "webpack-dev-server --hot --inline --content-base ./react-build/ --config webpack.react.config.js"

}

原博地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,440评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,814评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,427评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,710评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,625评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,014评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,511评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,162评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,311评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,262评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,278评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,989评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,583评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,664评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,904评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,274评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,856评论 2 339

推荐阅读更多精彩内容