Development

原文地址:https://webpack.js.org/guides/development/
翻译:xiyoki

Development(开发)

本页将解释如何开始开发,以及如何选择三个工具中的一个来开发。
假设你已经有了一个webpack配置文件。

Adjusting Your Text Editor(调整你的文本编辑器)

一些文本编辑器有一个 "safe write"功能,并且默认是启用的。因此,点击保存文件并不会使得文件被重新编译。

对不同的编辑器禁用该功能的方式是不同。下面是针对最常见的编辑器的设置:

  • Sublime Text 3 - Add "atomic_save": false to your user preferences.
  • IntelliJ - use search in the preferences to find "safe write" and disable it.
  • Vim - add :set backupcopy=yes in your settings.
  • WebStorm - uncheck Use "safe write" in Preferences > Appearance & Behavior > System Settings

Source Maps

当JavaScript出现异常,你会想知道哪个文件,哪一行产生了这个错误。由于webpack输出files到一个或多个bundle中,跟踪文件就不太方便。
Source maps 致力于解决这个问题。这里有不同的选项,每个选项既有优点也有缺点。为了开始,你可以选用这个:

devtool: "cheap-module-source-map"

devtool还有其他值供你选择,详见配置项devtool

Choosing a Tool(选择一个工具)

这里有三个工具供你选择:

  • watch mode:在这个mode中,webpack将会watch你的files, 并在文件改变时重新编译。
  • webpack-dev-server:webpack-dev-server提供了一个易使用,并能快速刷新浏览器的development server。
  • webpack-dev-middleware:如果你已经有了一个development server,并且想要全部的灵活性, webpack-dev-middleware可以被当做一个中间件来使用。

在大多数情况下,你会想要使用webpack-dev-server,因为使用它开始是最容易的,并且它也提供了很多盒子之外( out-of-the-box)的功能。

webpack Watch Mode

...略。详情请查看原文。

webpack-dev-server

webpack-dev-server提供了一个server,以及live reloading(自动加载)的功能。它很容易设置。

准备工作: 确保你有一个index.html文件,打包后的文件内嵌其中。 假设output.filenamebundle.js:

<script src="/bundle.js"></script>

开始通过npm安装webpack-dev-server:

npm install webpack-dev-server --save-dev

当安装完成,你应当像这样使用webpack-dev-server:

webpack-dev-server --open

如果你的控制台报告找到不到这个命令,那么就尝试运行 node_modules/.bin/webpack-dev-server --open。最佳方式是将这个命令添加进package.json, 就像这样:

 "scripts": { "start": "webpack-dev-server --open" }

上述命令会自动在http://localhost:8080下打开你的浏览器。

Make a change in one of your files and hit save. You should see that the console is recompiling. After that's done, the page should be refreshed. If nothing happens in the console, you may need to fiddle with watchOptions
.

Now you have live reloading working, you can take it even a step further: Hot Module Replacement. This is an interface that makes it possible to swap modules without a page refresh. Find out how to configure HMR.

个人补充:如果只需实现React模块的热加载,那么使用Babel中的react-transform-hrm插件,可以在不对React模块进行额外配置的前提下让HMR正常工作,即可以更方便的实现React模块的热加载。
具体操作:

  • 第一步:安装react-transform-hmr
cnpm install --save-dev babel-plugin-react-transform react-transform-hmr
  • 第二步:在webpack配置文件中添加HMR插件,并在Webpack Dev Server中添加“hot”参数;
//webpack.config.js
var webpack = require("webpack");
module.exports = {
  ...
  plugins: [
    ...
    new webpack.HotModuleReplacementPlugin()//热加载插件
  ],
  devServer: {
    ...
    hot: true
  }
}
  • 第三步:配置Babel
//.babelrc
{
  "presets": ["react", "es2015"],
  "env": {
    "development": {
    "plugins": [["react-transform", {
       "transforms": [{
         "transform": "react-transform-hmr",
         "imports": ["react"],
         "locals": ["module"]
       }]
     }]]
    }
  }
}

详细参考zhangwang翻译的这篇文章

默认使用inline模式 。This mode injects the client - needed for live reloading and showing build errors - in your bundle. With inline mode you will get build errors and warnings in your DevTools console. more information about inline.

webpack-dev-server可以做更多的事,比如为后端server代理请求(proxying requests) 。更多配置选项,查看devServer documentation

webpack-dev-middleware

...略。详情请查看原文。

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

推荐阅读更多精彩内容