相关文章推荐
爱旅游的红茶  ·  韩国检方对尹锡悦夫妇私宅展开扣押搜查-新华网·  11 月前    · 
谦和的小熊猫  ·  医学院学工组走访学生宿舍了解学生生活状态-医 ...·  11 月前    · 
挂过科的机器猫  ·  淘气的金丝猴_百度百科·  11 月前    · 
坚韧的甜瓜  ·  学院开展全国医学检验技术专业大学生形态学大赛 ...·  11 月前    · 
气势凌人的弓箭  ·  合肥大学马克思主义学院实践教学基地在李鸿章故 ...·  1 年前    · 
小百科  ›  环境变量 | webpack 中文文档
帅气的消防车
3 年前
webpack logo
中文文档 参与贡献 投票 博客 印记中文
  • English
  • 中文
  • 한국어
API 概念 配置 指南 loader 迁移 plugin
翻译/文档内容有任何问题,请联系我们
Print Section Printer Icon
指南
起步
  • 基本安装
  • 创建一个 bundle
  • 模块
  • 使用一个配置文件
  • npm scripts
  • 结论
管理资源
  • 设置
  • 加载 CSS
  • 加载 images 图像
  • 加载 fonts 字体
  • 加载数据
    • 自定义 JSON 模块 parser
  • 全局资源
  • 回退处理
  • 下篇指南
  • 延伸阅读
管理输出
  • 预先准备
  • 设置 HtmlWebpackPlugin
  • 清理 /dist 文件夹
  • manifest
  • 结论
开发环境
  • 使用 source map
  • 选择一个开发工具
    • 使用 watch mode(观察模式)
    • 使用 webpack-dev-server
    • 使用 webpack-dev-middleware
  • 调整文本编辑器
  • 结论
代码分离
  • 入口起点(entry point)
  • 防止重复(prevent duplication)
    • 入口依赖
    • SplitChunksPlugin
  • 动态导入(dynamic import)
  • 预获取/预加载模块(prefetch/preload module)
  • bundle 分析(bundle analysis)
  • 下一步
缓存
  • 输出文件的文件名(output filename)
  • 提取引导模板(extracting boilerplate)
  • 模块标识符(module identifier)
  • 结论
创建 library
  • 创建一个 library
  • Webpack 配置
  • Expose the Library
  • 外部化 lodash
    • 外部化的限制
  • 最终步骤
环境变量
构建性能
  • 通用环境
    • 更新到最新版本
    • loader
    • 引导(bootstrap)
    • 解析
    • dll
    • 小即是快(smaller = faster)
    • worker 池(worker pool)
    • 持久化缓存
    • 自定义 plugin/loader
    • Progress plugin
  • 开发环境
    • 增量编译
    • 在内存中编译
    • stats.toJson 加速
    • Devtool
    • 避免在生产环境下才会用到的工具
    • 最小化 entry chunk
    • 避免额外的优化步骤
    • 输出结果不携带路径信息
    • Node.js 版本 8.9.10-9.11.1
    • TypeScript loader
  • 生产环境
    • Source Maps
  • 工具相关问题
    • Babel
    • TypeScript
    • Sass
内容安全策略
  • 示例
  • 启用 CSP
  • Trusted Types
开发 - Vagrant
  • 配置项目
  • 启动服务器
  • 配合 nginx 的高级用法
  • 结论
依赖管理
  • 带表达式的 require 语句
  • require.context
    • context module API
安装
  • 前提条件
  • 本地安装
  • 全局安装
  • 最新体验版本
模块热替换
  • 启用 HMR
  • 通过 Node.js API
  • 问题
  • HMR 加载样式
  • 其他代码和框架
Tree Shaking
  • 添加一个通用模块
  • 将文件标记为 side-effect-free(无副作用)
  • 解释 tree shaking 和 sideEffects
  • 将函数调用标记为无副作用
  • 压缩输出结果
  • 结论
生产环境
  • 配置
  • NPM Scripts
  • 指定 mode
  • 压缩(Minification)
  • 源码映射(Source Mapping)
  • 压缩 CSS
  • CLI 替代选项
懒加载
  • 示例
  • 框架
ECMAScript 模块
  • 导出
  • 导入
  • 将模块标记为 ESM
Shimming 预置依赖
  • Shimming 预置全局变量
  • 细粒度 Shimming
  • 全局 Exports
  • 加载 Polyfills
  • 进一步优化
  • Node 内置
  • 其他工具
TypeScript
  • 基础配置
  • Loader
  • Source Maps
  • Client types
  • 使用第三方类库
  • 导入其他资源
  • 构建性能
Web Workers
  • 语法
  • 示例
  • Node.js
渐进式网络应用程序
  • 现在,我们并没有运行在离线环境下
  • 添加 Workbox
  • 注册 Service Worker
  • 结论
公共路径
  • 示例
    • 基于环境设置
    • 在运行时设置
    • Automatic publicPath $#automaticpublicPath$
集成
  • NPM Scripts
  • Grunt
  • Gulp
  • Mocha
  • Karma
资源模块
  • Resource 资源
    • 自定义输出文件名
  • inline 资源(inlining asset)
    • 自定义 data URI 生成器
  • source 资源(source asset)
  • URL 资源
  • 通用资源类型
  • 变更内联 loader 的语法
  • Disable emitting assets
entry 高级用法
  • 每个入口使用多种文件类型
Package exports
  • General syntax
  • Alternatives
  • Conditional syntax
  • Abbreviation
  • Notes about ordering
  • Support
  • Conditions
    • Reference syntax
    • Optimizations
    • Target environment
    • Conditions: Preprocessor and runtimes
    • Conditions: Custom
  • Common patterns
    • Target environment independent packages
    • Providing devtools or production optimizations
    • Providing different versions depending on target environment
    • Combining patterns
  • Guidelines

环境变量

想要消除 webpack.config.js 在 开发环境 和 生产环境 之间的差异,你可能需要环境变量(environment variable)。

tip

webpack 环境变量,与操作系统中的 bash 和 CMD.exe 这些 shell 环境变量 不同。

webpack 命令行 环境配置 的 --env 参数,可以允许你传入任意数量的环境变量。而在 webpack.config.js 中可以访问到这些环境变量。例如, --env production 或 --env goal=local 。

npx webpack --env goal=local --env production --progress
tip

如果设置 env 变量,却没有赋值, --env production 默认表示将 env.production 设置为 true 。还有许多其他可以使用的语法。更多详细信息,请查看 webpack CLI 文档。

对于我们的 webpack 配置,有一个必须要修改之处。通常, module.exports 指向配置对象。要使用 env 变量,你必须将 module.exports 转换成一个函数:

webpack.config.js

const path = require('path');
module.exports = (env) => {
  // Use env.<YOUR VARIABLE> here:
  console.log('Goal: ', env.goal); // 'local'
  console.log('Production: ', env.production); // true
  return {
    entry: './src/index.js',
 
推荐文章
爱旅游的红茶  ·  韩国检方对尹锡悦夫妇私宅展开扣押搜查-新华网
11 月前
谦和的小熊猫  ·  医学院学工组走访学生宿舍了解学生生活状态-医学院学生网
11 月前
挂过科的机器猫  ·  淘气的金丝猴_百度百科
11 月前
坚韧的甜瓜  ·  学院开展全国医学检验技术专业大学生形态学大赛动员-检验与生物 ...
11 月前
气势凌人的弓箭  ·  合肥大学马克思主义学院实践教学基地在李鸿章故居陈列馆签约揭牌
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
小百科 - 百科知识指南
© 2024 ~ 沪ICP备11025650号