Webpack 配置入门

更新:Webpack4已经发布,本篇是基于Webpack3的,请注意。
更正:
1.package.json中使用了应该使用本地webpack而不是全局webpack。

  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dist": "webpack",
    "build:dll": "webpack --config webpack.config.dll.js",
    "build:dev": "webpack-dev-server --config webpack.config.dev.js --open",
    "build:pord": "webpack --config webpack.config.pord.js"
  },

应为:

  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dist": "./node_modules/.bin/webpack",
    "build:dll": "./node_modules/.bin/webpack --config webpack.config.dll.js",
    "build:dev": "./node_modules/.bin/webpack-dev-server --config webpack.config.dev.js --open",
    "build:pord": "./node_modules/.bin/webpack --config webpack.config.pord.js"
  },
  1. webpack.config.js文件中output.publicPath缺失,应为:
  output: {
    publicPath: "http://www.example.com/", // <---- 这里填写web访问地址,域名、IP、CDN等
    filename: '[name]_[chunkhash:20].js',               // 输出带20位hash的文件名
    path: path.resolve(__dirname, 'dist'),              // 输出路径
  },

output.publicPath会更正文件或资源的前缀,在正式部署时特别必要。

一、什么是webpack,为什么要使用它?

1.官方解释

webpack是一个现代JavaScript应用程序的模块打包器(module bundler)。

2.个人理解

webpack是一个模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块进行处理,找到其它的模块如css及一些浏览器不能直接运行的拓展语言模块Scss,TypeScript等,并选择相应的插件进行处理,并将处理结果转换打包为合适的格式供浏览器使用。

3.优缺点

Grunt以及Gulp是在一个配置文件中指定对文件处理的具体流程,如校验->编译->组合->压缩等。配置比较繁琐,但是可定制性比较高。

webpack把整个项目当成整体,从入口查找文件关系,然后整体的以文件为单位使用loader对代码进行处理,最后打包为一个或者多个浏览器识别的文件。配置相对简单,处理速度快,高级场景下定制能力有限,但是大部分情况下可以替代Grunt以及Gulp。

二、安装webpack

1.安装

1.1前置条件

安装nodejs,nodejs.org,不再详述

1.2安装方式

在终端运行命令:

# 全局安装
npm install -g webpack
# 安装到项目目录
npm install --save-dev webpack

上面两个命令可以选择执行一个,但建议执行两个。项目中安装一个置指定版本的webpack,全局的webpack作为备份项。

三、项目中的webpack

1.项目

如果已经有npm项目请略过。

# 前往工作区,[$WORKSPACE]替换为自己的工作区路径
cd [$WORKSPACE]
# 创建项目目录
mkdir webpack_demo
# 初始化package.json,可以一路略过
npm init

2.安装webpack

# 安装的项目目录
npm install --save-dev webpack

3.Demo01 - Hello Webpack

建立如下目录结构

.
├── dist
│   └── index.html
├── package.json
├── public
└── src
    ├── Welcome.js
    └── index.js

代码如下:

<!--index.html-->
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Webpack Sample Project</title>
  </head>
  <body>
    <div id='root'>
    </div>
    <script src="bundle.js"></script>
  </body>
</html>
// index.js
import welcome from './Welcome.js'

document.querySelector("#root").appendChild(welcome());
// Welcome.js
export default function() {
  var welcome = document.createElement('div');
  welcome.textContent = "Hello webpack!";
  return welcome;
};

webpack可以通过命令行使用,可以先通过下面的方式调用:

$> node_modules/.bin/webpack src/index.js dist/bundle.js
Hash: 098382ad52c485fbdff8
Version: webpack 3.6.0
Time: 66ms
    Asset     Size  Chunks             Chunk Names
bundle.js  2.78 kB       0  [emitted]  main
   [0] ./src/index.js 96 bytes {0} [built]
   [1] ./src/Welcome.js 138 bytes {0} [built]

此时可以动过浏览器访问dist/index.html

4.Demo02 - 通过配置文件来使用webpack

webpack虽然支持使用命令行的方式配置使用,但Demo01中使用命令行的方式输入起来还是比较繁琐。webpack支持使用配置文件进行参数配置。

在项目根目录下创建webpack.config.js文件(这也是webpack的默认配置文件):

const path = require('path');

module.exports = {
  entry: './src/index.js',
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist')
  }
};

然后可以执行命令进行编译打包:

# 指定配置文件
./node_modules/.bin/webpack --config webpack.config.js
# 使用默认配置文件
./node_modules/.bin/webpack
# 使用作用域最近的webpack,并且使用默认配置文件
webpack
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Webpack 是一个常用于打包 JavaScript 应用程序的工具,它的主要作用是将多个 JavaScript 文件打包成一个或多个文件,并且可以处理其他资源文件,如 CSS、图片等。在实际开发中,随着项目规模的增大,Webpack 打包速度、体积等问题就会变得越来越重要,因此,Webpack 优化也成为一个不可忽视的问题。 以下是一些常见的 Webpack 优化方法: 1. 减少文件搜索范围 Webpack 会遍历整个项目目录来查找符合要求的文件,这个过程会消耗大量的时间和资源。我们可以通过配置 resolve.modules 和 resolve.extensions 来减少搜索范围,从而提升打包速度。 2. 使用 Tree Shaking Tree Shaking 是指通过静态分析,将代码中用不到的部分去除,只打包项目中实际被使用的代码。这样可以减少打包后的文件体积。在实际开发中,我们可以使用 webpack.optimize.UglifyJsPlugin 和 webpack.optimize.AggressiveMergingPlugin 等插件来实现 Tree Shaking。 3. 使用 Code Splitting Code Splitting 是指将应用程序拆分成多个 bundle,使得每个 bundle 只包含应用程序的一部分功能,从而减少每个 bundle 的体积,提高加载速度。在实际开发中,我们可以使用 Webpack 自带的代码拆分功能,或者使用第三方库如 react-loadable、bundle-loader 等来实现 Code Splitting。 4. 使用缓存 Webpack 默认会将每个文件的 Hash 值作为文件名的一部分,这样可以保证文件内容发生变化时,文件名也会发生变化,从而避免浏览器缓存问题。但是,如果没有改变的文件也每次都重新打包,就会导致打包速度变慢。因此,我们可以使用缓存来提高打包速度。在 Webpack 中,我们可以使用 cache-loader 和 hard-source-webpack-plugin 等插件来实现缓存。 5. 使用 CDN 加速 通过使用 CDN(内容分发网络),可以将静态资源文件分发到全球各地的服务器上,从而提高文件加载速度。在 Webpack 中,我们可以使用 HtmlWebpackPlugin 和 Webpack 自带的 publicPath 配置来实现 CDN 加速。 以上是一些常见的 Webpack 优化方法,当然还有很多其他的优化方法,需要根据具体情况进行选择和实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值