首页 > 其他分享 >配置 webpack.production.config.js

配置 webpack.production.config.js

时间:2023-11-26 19:32:43浏览次数:28  
标签:NODE 代码 js webpack production ENV config

配置 webpack.production.config.js

开发环境下,可以不用考虑系统的性能,更多考虑的是如何增加开发效率。而发布系统时,就需要考虑发布之后的系统的性能,包括加载速度、缓存等。下面介绍发布用配置代码和开发用的不一样的地方。

发布到 ./build 文件夹中

path: __dirname + "/build",

vendor

将第三方依赖单独打包。即将 node_modules 文件夹中的代码打包为 vendor.js 将我们自己写的业务代码打包为 app.js。这样有助于缓存,因为在项目维护过程中,第三方依赖不经常变化,而业务代码会经常变化。

md5后缀

为每个打包出来的文件都加md5后缀,例如"/js/[name].[chunkhash:8].js",可使文件强缓存。

分目录

打包出来的不同类型的文件,放在不同目录下,例如图片文件将放在img/目录下

Copyright

自动为打包出来的代码增加 copyright 内容

分模块

new webpack.optimize.OccurenceOrderPlugin(),

压缩代码

使用 Uglify 压缩代码,其中warnings: false是去掉代码中的 warning

分离 css 和 js 文件

开发环境下,css 代码是放在整个打包出来的那个 bundle.js 文件中的,发布环境下当然不能混淆在一起,使用new ExtractTextPlugin('/css/[name].[chunkhash:8].css'),将 css 代码分离出来。

npm run build

打开package.json,查看以下代码。npm startnpm run build分别是运行代码和打包项目。另外,"start"、"test"可以不用run

"scripts": {
    "start": "NODE_ENV=dev webpack-dev-server --progress --colors",
    "build": "rm -rf ./build && NODE_ENV=production webpack --config ./webpack.production.config.js --progress --colors"
  },

这两个命令主要有以下区别:

  • 前者中默认使用 webpack.config.js 作为配置文件,而后者中强制使用 webpack.production.config.js 作为配置文件
  • 前者NODE_ENV=dev而后者NODE_ENV=production,标识不同的环境。而这个"dev" "production"可以在代码中通过process.env.NODE_ENV获取。

最小化压缩 React

以下配置可以告诉 React 当前是生产环境,请最小化压缩 js ,即把开发环境中的一些提示、警告、判断通通去掉,直流以下发布之后可用的代码。

new webpack.DefinePlugin({
      'process.env':{
        'NODE_ENV': JSON.stringify(process.env.NODE_ENV)
      }
    }),

标签:NODE,代码,js,webpack,production,ENV,config
From: https://blog.51cto.com/u_16251183/8571879

相关文章

  • Filesystem type ntfs3,ntfs not configured in kernel
    title:Filesystemtypentfs3,ntfsnotconfiguredinkernelbanner_img:https://cdn.studyinglover.com/pic/2023/07/6eb76e56ebdd72a1bbcb48f4a19cc0da.pngdate:2023-7-149:35:00categories:-踩坑Filesystemtypentfs3,ntfsnotconfiguredinkernel昨天卸载硬盘......
  • 命令行 npm config set legacy-peer-deps true 的作用
    首先,我们需要了解npm,npm是NodePackageManager的缩写,它是Node.js的默认包管理工具。npm提供了许多命令,如install、uninstall、update等,用于管理Node.js的依赖和包。npmconfigsetlegacy-peer-depstrue是npm的一个命令,它主要用于解决npm7在处理peerdepende......
  • webpack原理实战笔记
    我是歌谣想加入前端技术群私信我最近开始webpack原理的书写目录结构核心依赖{"name":"mywebpack","version":"1.0.0","description":"","main":"index.js","scripts":{"test"......
  • ConfigureAwait in .NET8
    ConfigureAwaitin.NET8ConfigureAwait(true)和ConfigureAwait(false)首先,让我们回顾一下原版ConfigureAwait的语义和历史,它采用了一个名为continueOnCapturedContext的布尔参数。当对任务(Task、Task<T>、ValueTask或ValueTask<T>)执行await操作时,其默认行为是捕获“上......
  • kubelet热更新configmap
    k8sv1.19.0configmap热更新约束支持热更新:目录方式挂载configmap。不支持热更新:subPath单个文件方式挂载configmap和configmap注入到环境变量。configmap热更新逻辑修改kube-system/configmapcoredns后触发kubelet热更新configmap。pkg/kubelet/volumemanager/reconciler/......
  • webpack的html模板中插入变量写法
    vue-cli文档中的描述如下Index文件#public/index.html 文件是一个会被 html-webpack-plugin 处理的模板。在构建过程中,资源链接会被自动注入。另外,VueCLI也会自动注入resourcehint(preload/prefetch、manifest和图标链接(当用到PWA插件时)以及构建过程中处理的Ja......
  • Configuration error: VRRP definition must belong to an interface
     lobal_defs{}vrrp_instanceVI_1{stateMASTER#指定A节点为主节点备用节点上设置为BACKUP即可interfaceeth0#绑定虚拟IP的网络接口virtual_router_id51#VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组priority100......
  • Spring_2023_11_21_1 使用javaConfig实现DI
    Spring_Aop2023_11_21_1使用javaConfig实现DIjavaConfig,是在Spring3.0开始从一个独立的项目并入到Spring中的。javaConfig可以看成一个用于完成Bean装配的Spring配置文件,即Spring容器,只不过该容器不是XML文件,而是由程序员使用java自己编写的java类。一个类中......
  • k8s解析kubeconfig的两种常用方式
    k8sv1.19.0方法1staging/src/k8s.io/client-go/tools/clientcmd/client_config.goBuildConfigFromFlags函数根据本地kubeconfig文件路径来生成restclient.Config对象。staging/src/k8s.io/client-go/tools/clientcmd/loader.goLoad方法读取指定目录下多个文件内容并合并,转换......
  • Hexo-GitHub部署魔改第一步-config
    Hexo-GitHub部署魔改第一步_config.yml1.config.yml#HexoConfiguration##Docs:https://hexo.io/docs/configuration.html##Source:https://github.com/hexojs/hexo/#Site#设置博客的标题title:YourBlogTitle#子标题,可选subtitle:'xxxxx'#博客的描述,可选......