`

[译]webpack官网文档 :指南 -- 11.开发

阅读更多

原创翻译,转载请注明出处。 

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

 

在这一章里我们将介绍怎样开始开发,怎样从三个工具里选择一个进行开发。它假定你已经有了一个webpack配置文件。

 

调整你的文本编辑器

一些文本编辑器有一个“safe write”的功能并被默认为有效。结果一个文件被保存之后并没有被重新编译。

每种编辑器都有不同的方法来禁止它,最通常的做法是:

  • Sublime Text 3:在用户设定里加入"atomic_save": false
  • IntelliJ:在设定里查找“safe write“,并使它无效
  • Vim:在你的设定里加上:set backupcopy=yes
  • WebStorm:在 Preferences > Appearance & Behavior > System Settings里取消"safe write"选中。

 

Source Maps

当发生一个JavaScript例外的时候,你经常想知道哪个文件哪一行产生了这个错误。因为webpack把文件输出到一个或几个包里,所以跟踪文件很不方便。

Source maps能解决这个问题。有很多不同的设定 – 每一个都有它们的长处和短处。我们用这个来开始:

 

devtool: "cheap-eval-source-map"

 

 

选择一个工具

webpack可以在观察模式下使用。在这个模式下webpack监视文件,并且当文件被修改的时候重新编译。webpack-dev-server提供了一个易用的开发服务器,它可以快速的实时的重新加载。如果你已经有了一个开发服务器,并且想要充分的灵活性,webpack-dev-middleware可以被用作中间件。

webpack-dev-server和webpack-dev-middleware使用内存编译,意味着包文件不会被保存到磁盘上。这可以使编译更快,并且不会给你的文件系统添乱。

大多数情况下你会希望使用webpack-dev-server,因为它很容易上手,并且提供很多即用功能。

 

webpack观察模式

Webpack的观察模式会监视文件的变动。如果发现任何变动,它就会再次运行编译。

我们还希望在编译的时候能看到一个好看的进度条,运行下面的命令:

 

webpack --progress --watch

 

 

修改一个文件并且保存,你将会看到它正在编译。

观察模式没有考虑到服务器,所有你需要自己提供一个服务器。一个易用的服务器是serve。安装(npm i --save-dev serve)它之后,就可以在输出文件所在的目录上运行它

 

`npm bin`/serve

 

 

用npm脚本运行serve的话会更便利。可以在package.json里创建一个start脚本:

 

...
"scripts": {
  "start": "serve"
}
...

 

 

然后你可以在项目所在的目录里运行npm start来启动服务器。每次编译之后,你需要刷新浏览器才能看到变化。

 

在Chrome的开发者工具工作区使用观察模式

如果你想把Chrome设定成保存代码之后不用刷新页面就能看到变化的话,你需要用下面命令设置webpack,然后就可以持续的编辑并保存来自Chrome或者源代码的更改。

 

devtool: "inline-source-map"

 

 

在工作区使用观察模式会有一些缺陷:

  • 大的代码块文件(一个超过1M的普通代码块)重新编译的时候,会让页面产生空白,这时你需要刷新浏览器
  • 编译小代码块会比大代码块更快,因为inline-source-map会对源代码进行base64编码而变慢。

 

webpack-dev-server

webpack-dev-server提供一个能实时再加载的服务器。配置起来很简单。

前期准备,你得有一个引入包文件的index.html文件。假设output.filename就是bundle.js:

 

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

 

从npm安装webpack-dev-server:

 

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

 

安装完之后,你就应该能这样使用webpack-dev-server

 

webpack-dev-server --open

 

上面的命令应该能自动启动浏览器并打开http://localhost:8080

修改一个代码文件并点保存。你应该能从控制台上看到正在重新编译。编译完之后,也念会被刷新。如果控制台什么也没发生的话,你可能需要注意一下watchOptions

现在实时重新加载已经OK了,你可以再进一步:模块热替换。它是一个接口,使不用刷新页面就能替换模块。

默认是使用行内模式(inline mode)。这种模式把需要实时再加载和显示编译错误的客户端注射到你的包里,在行内模式下你可以在开发者工具的控制台上看到编译错误和警告。

webpack-dev-server还可以做更多, 比如代理访问后端服务器。

 

webpack-dev-middleware

webpack-dev-middleware为那些基于连接的中间件栈服务。这对你已经有一个Node.js服务器或希望对服务器有全面地控制会非常有用。

中间件会让webpack在内存内编译文件。当一个编译正在运行的时候,它会延迟对一个文件的请求,直到编译完成。

首先,从npm安装依赖:

 

npm install express webpack-dev-middleware --save-dev

 

安装完之后,你可以像这样使用中间件:

 

var express = require("express");
var webpackDevMiddleware = require("webpack-dev-middleware");
var webpack = require("webpack");
var webpackConfig = require("./webpack.config");
 
var app = express();
var compiler = webpack(webpackConfig);
 
app.use(webpackDevMiddleware(compiler, {
  publicPath: "/" // Same as `output.publicPath` in most cases.
}));
 
app.listen(3000, function () {
  console.log("Listening on port 3000!");
});

 

依据你在output.publicPathoutput.filename定义的内容,访问http://localhost:3000/bundle.js就可以得到你的包。

默认上使用观察模式。还以使用懒模式,它只在对入口文件请求时进行编译。

是有对bundle.js请求的时候才编译:

 

app.use(webpackDevMiddleware(compiler, {
  lazy: true,
  filename: "bundle.js" // Same as `output.filename` in most cases.
}));

 

你还可以使用很多配置。

 

参考文献

SurviveJS - Automatic Browser Refresh

webpack your Chrome DevTools Workspaces

 

-- End --

 

 

0
0
分享到:
评论

相关推荐

    compile-node-sass-0.0.3.zip

    【压缩包子文件的文件名称列表】中的`README.MD`通常包含了项目的基本信息、使用指南、安装步骤等,是理解项目的重要文档。而`node_modules`是Node.js项目的依赖库目录,其中包含`node-sass`模块以及其他可能的依赖...

    Webpack4中文手册(4.39.3).pdf

    Webpack4是Webpack的最新稳定版本,提供了许多改进和新特性,而Webpack4中文手册则是针对此版本的详细使用指南。 在Webpack4中文手册中,首先介绍的是配置webpack的基础。配置文件通常命名为webpack.config.js,在...

    Laravel开发-laravel-jos .zip.zip

    8. **文档**:可能包含`.md`格式的文档,介绍项目架构、使用方法、开发指南等。 9. **示例**:可能有示例代码或示例应用,展示如何在实际场景中使用Laravel Jos的功能。 10. **其他**:如`package.json`(如果项目...

    node-v18.2.0-win-x64.zip

    4. **文档**:可能包含安装指南、API参考和其他帮助文件,对于学习和理解Node.js API非常重要。 5. **示例和工具**:可能包括一些示例脚本和实用工具,帮助初学者快速上手。 使用Node.js,你可以构建各种类型的应用...

    Laravel开发-laravel-kraken .zip.zip

    【Laravel 开发详解:基于 Laravel Kraken 的实践指南】 Laravel 是一款广泛使用的开源 PHP 框架,以其优雅的语法和强大的功能深受开发者喜爱。"Laravel 开发 - laravel-kraken .zip.zip" 提供了一个针对 Laravel ...

    webpack 入门

    - [Webpack 官方文档](https://webpack.js.org/) - [Webpack 中文指南](https://zhcn.webpack.js.org/) #### 六、总结 Webpack 作为一款强大的前端打包工具,在现代前端开发中扮演着重要的角色。通过合理配置和...

    AS-Editor v1.0.zip

    "AS-Editor v1.0.zip" 是一个包含源代码的压缩包,主要用于软件开发,尤其是对于计算机案例、毕业设计论文以及模板建站等应用场景。这个压缩包内有两个主要文件:"说明.htm" 和 "as-editor-master"。下面将详细阐述...

    WX-CLI-源码.rar

    【标题】"WX-CLI-源码.rar" 暗示了这是一个与微信小程序开发相关的命令行工具(CLI,Command Line Interface)的源代码压缩包。通常,CLI工具旨在简化和自动化开发流程,使得开发者可以通过命令行接口快速执行任务,...

    webpack中文文档

    - **错误排查**: 查阅Webpack官方文档或社区资源寻找解决方案。 - **优化策略**: 如代码拆分、缓存机制等提升构建速度。 #### 三、Webpack进阶 - **模块化标准**: - **CommonJS**: 节点环境的模块化标准。 - *...

    s-ui-component.rar

    3. **示例或文档**:可能包括HTML文件,展示如何在实际项目中使用这些组件,以及README文件,提供安装和配置指南。 4. **图表现象**:SVG图标或其他图形资源,用于组件的视觉元素。 5. **测试文件**: Jest、Mocha或...

    https-environmentors123.github.io-https-github.com-Environmentors123-Mission-Disposable-

    此外,现代Web开发还可能涉及框架和库,如React、Vue或Angular,以及工具链,如Webpack、Babel和npm。 为了了解更多关于"Mission-Disposable"项目的信息,我们需要访问其GitHub页面或下载并分析压缩包内容。这个...

    bpmn-js-develop.zip

    在解压后的文件中,我们可以预期看到`src`目录包含核心的JavaScript源代码,`test`目录包含单元测试,`example`目录可能包含如何在实际项目中使用bpmn-js的示例,`docs`目录可能包含API文档和用户指南。 **API接口*...

    vue-demo-pl-table.zip

    5. **vue.config.js**: 这是Vue CLI项目的配置文件,可以自定义Webpack配置,例如设置公共路径、调整输出文件结构、添加全局CSS变量或者修改Vue的开发服务器设置等。 6. **babel.config.js**: Babel是一个...

    iview-admin2.3.0 技术文档.docx

    Iview-admin 2.3.0 技术文档主要涵盖了基于 Vue.js 框架的前端项目开发配置和路由管理。以下将详细解释其中的关键知识点: 1. **Vue.js 基础配置**: 在项目的根目录下,`vue.config.js` 文件是 Vue CLI 的配置...

    node-v14.15.1-win-x64

    对于开发者而言,Node.js 具备强大的生态系统,拥有丰富的第三方库,如 Express(用于构建 web 应用)、MongoDB 驱动(连接 MongoDB 数据库)、Webpack(模块打包工具)等。 此外,Node.js v14.15.1 属于 LTS(长期...

    webpack 中文指南

    - **官方文档**:[Webpack官网](https://webpack.js.org/) - **中文指南**:[Webpack中文指南](https://zhcn.webpack.js.org/) - **社区资源**:GitHub、Stack Overflow等社区讨论。 ### 结语 Webpack作为一个强大...

    pluto-2.0.0-bundle.zip

    5. **构建工具和脚本**:为了简化开发和部署流程,可能会包含自动化构建工具(如Webpack、Gulp或Grunt)以及相关的配置文件和脚本。 6. **测试框架和示例测试**:为了确保代码质量,Pluto可能会附带一个集成的测试...

    sg-exam-master.zip

    - 开发工具:Webpack、Babel、ESLint、Prettier等 - 测试框架:Jest、Mocha、Chai、Pytest等 - 版本控制:Git - 部署方案:Docker、Heroku、AWS、GCP等 项目可能包含的功能模块有: 1. 用户注册与登录:用户认证...

    boss-driver-school-h5.zip

    通过这些文件,我们可以看出这个项目是一个使用 TypeScript 开发的前端应用,借助 Babel 和 Webpack 进行构建,使用 ESLint 进行代码质量控制,日期处理部分可能使用了 date-fns 库。开发者可以参考这个项目来学习 ...

Global site tag (gtag.js) - Google Analytics