CD's blog CD's blog
首页
  • HTMLCSS
  • JavaScript
  • Vue
  • TypeScript
  • React
  • Node
  • Webpack
  • Git
  • Nestjs
  • 小程序
  • 浏览器网络
  • 学习笔记

    • 《TypeScript 从零实现 axios》
    • Webpack笔记
  • JS/TS教程

    • 《现代JavaScript》教程
🔧工具方法
  • 网站
  • 资源
  • Vue资源
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

CD_wOw

内卷的行情,到不了的梦
首页
  • HTMLCSS
  • JavaScript
  • Vue
  • TypeScript
  • React
  • Node
  • Webpack
  • Git
  • Nestjs
  • 小程序
  • 浏览器网络
  • 学习笔记

    • 《TypeScript 从零实现 axios》
    • Webpack笔记
  • JS/TS教程

    • 《现代JavaScript》教程
🔧工具方法
  • 网站
  • 资源
  • Vue资源
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 配置

  • 指南(实例)

    • 安装
    • 起步
    • 管理资源
    • 管理输出
    • 开发
    • 模块热替换
    • tree shaking
    • 生产环境构建
    • 代码分离
    • 懒加载
    • 缓存
    • 创建 library
    • shimming
    • 渐进式网络应用程序
    • TypeScript
    • 迁移到新版本
    • 使用环境变量
    • 构建性能
    • 内容安全策略
    • 开发 - Vagrant
    • 管理依赖
    • 公共路径(public path)
    • 集成(integrations)
      • NPM Scripts
      • Grunt
      • Gulp
      • Mocha
      • Karma
  • 《Webpack》笔记
  • 指南(实例)
CD_wOw
2020-12-15
目录

集成(integrations)

首先我们要消除一个常见的误解。webpack 是一个模块打包器(module bundler)(例如,Browserify (opens new window) 或 Brunch (opens new window))。它不是一个任务执行器(task runner)(例如,Make (opens new window), Grunt (opens new window) 或者 Gulp (opens new window) )。任务执行器就是用来自动化处理常见的开发任务,例如项目的检查(lint)、构建(build)、测试(test)。相对于打包器(bundler),任务执行器则聚焦在偏重上层的问题上面。你可以得益于,使用上层的工具,而将打包部分的问题留给 webpack。

打包器(bundler)帮助你取得准备用于部署的 JavaScript 和样式表,将它们转换为适合浏览器的可用格式。例如,JavaScript 可以压缩 (opens new window)、拆分 chunk (opens new window) 和懒加载 (opens new window),以提高性能。打包是 web 开发中最重要的挑战之一,解决此问题可以消除开发过程中的大部分痛点。

好消息是,虽然有一些功能重复,但如果以正确的方式处理,任务运行器和模块打包器能够一起协同工作。本指南提供了关于如何将 webpack 与一些流行的任务运行器集成在一起的高度概述。

# NPM Scripts

通常 webpack 用户使用 npm scripts (opens new window) 来作为任务执行器。这是比较好的开始。然而跨平台支持是一个问题,为此有一些解决方案。许多用户,但不是大多数用户,直接使用 npm scripts 和各种级别的 webpack 配置和工具,来应对构建任务。

因此,当 webpack 的核心焦点专注于打包时,有多种扩展可以供你使用,可以将其用于任务运行者常见的工作。集成一个单独的工具会增加复杂度,所以一定要权衡集成前后的利弊。

# Grunt

对于那些使用 Grunt 的人,我们推荐使用 grunt-webpack (opens new window) 包(package)。使用 grunt-webpack 你可以将 webpack 或 webpack-dev-server (opens new window) 作为一项任务(task)执行,访问模板标签(template tags) (opens new window)中的统计信息,拆分开发和生产配置等等。如果你还没有安装过 grunt-webpack 和 webpack,请先安装它们:

npm install --save-dev grunt-webpack webpack
1

然后注册一个配置并加载任务:

Gruntfile.js

const webpackConfig = require('./webpack.config.js');

module.exports = function(grunt) {
  grunt.initConfig({
    webpack: {
      options: {
        stats: !process.env.NODE_ENV || process.env.NODE_ENV === 'development'
      },
      prod: webpackConfig,
      dev: Object.assign({ watch: true }, webpackConfig)
    }
  });

  grunt.loadNpmTasks('grunt-webpack');
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

获取更多信息,请查看本仓库 (opens new window)。

# Gulp

在 webpack-stream (opens new window) 包(package)(也称作 gulp-webpack) 的帮助下,也可以很简单方便的将 Gulp 与 webpack 集成。在这种情况下,不需要单独安装 webpack ,因为它是 webpack-stream 直接依赖:

npm install --save-dev webpack-stream
1

只需要把 webpack 替换为 require('webpack-stream'),并传递一个配置文件就可以了:

gulpfile.js

var gulp = require('gulp');
var webpack = require('webpack-stream');
gulp.task('default', function() {
  return gulp.src('src/entry.js')
    .pipe(webpack({
      // 一些配置选项……
    }))
    .pipe(gulp.dest('dist/'));
});
1
2
3
4
5
6
7
8
9

获取更多信息,请查看本仓库 (opens new window)。

# Mocha

mocha-webpack (opens new window) 可以用来将 Mocha 与 webpack 完全集成。这个仓库提供了很多关于工具优势和缺点方面的细节,但 mocha-webpack 还算是一层简单的封装,提供与 Mocha 几乎相同的 CLI,并提供各种 webpack 功能,例如改进了 watch 模式和优化了路径分析(path resolution)。这里是一个如何安装并使用它来运行测试套件的小例子(在 ./test 中找到):

npm install --save-dev webpack mocha mocha-webpack
mocha-webpack 'test/**/*.js'
1
2

获取更多信息,请查看本仓库 (opens new window)。

# Karma

karma-webpack (opens new window) 包(package)允许你使用 webpack 预处理 Karma (opens new window) 中的文件。它也可以使用 webpack-dev-middleware (opens new window),并允许传递两者的配置。下面是一个简单的示例:

npm install --save-dev webpack karma karma-webpack
1

karma.conf.js

module.exports = function(config) {
  config.set({
    files: [
      { pattern: 'test/*_test.js', watched: false },
      { pattern: 'test/**/*_test.js', watched: false }
    ],
    preprocessors: {
      'test/*_test.js': [ 'webpack' ],
      'test/**/*_test.js': [ 'webpack' ]
    },
    webpack: {
      // 一些自定义的 webpack 配置……
    },
    webpackMiddleware: {
      // 一些自定义的 webpack-dev-middleware 配置……
    }
  });
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

获取更多信息,请访问本仓库 (opens new window)。

编辑 (opens new window)
#Webpack
上次更新: 2021/08/22, 01:09:59
公共路径(public path)

← 公共路径(public path)

最近更新
01
gsap动画库学习笔记 - 持续~
06-05
02
远程组件加载方案笔记
05-03
03
小程序使用笔记
03-29
更多文章>
Theme by Vdoing | Copyright © 2020-2023 CD | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式