image-webpack-loader(imagewebpackloader 淘宝镜像安装慢)
本篇文章给大家谈谈image-webpack-loader,以及imagewebpackloader 淘宝镜像安装慢对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、vue-codemirror代码格式化后,怎样压缩代码
- 2、二、webpack的loader配置
- 3、webpack核心四要素总结
- 4、Webpack优化构建速度
- 5、webpack图片压缩image-webpack-loader
- 6、webpack常用loader和plugin
vue-codemirror代码格式化后,怎样压缩代码
具体操作步骤如下:
1、设置productionSourceMap为false。如果不需要生产环境的亩指 source map,可以将其设置为 false 以加速生产环境构建。设梁耐肆置为false打包时橡轿候不会出现.map文件。
2、代码压缩。安装uglifyjs-webpack-plugin插件,可以去除项目中console.log和debugger。
3、图片资源压缩。
安装 image-webpack-loader 插件,可以将大图片进行压缩从而缩小打包体积。
4、开启gzip压缩。
二、webpack的loader配置
webpack打包的时候只认识 .js 文件,但我们开发中肯定不仅仅只是js文件,如 .html 、 .css 、 .jpg 等,webpack提供了很多 loader 来打包不同类型的文件。
对于加载css文件来说,我们需要一个可以读取css文件的loader,这个loader最常用的是 css-loader 。
webpack.config.js
css-loader 只是负责将.css文件进行解析,并不会将解析之后的css插入到页面中,如果我们希望再完成插入style的操作,那么我们还需要另外一个loader,就是 style-loader 。
* 注意: 因为loader的执行顺序是从右向左(或者说从下到上,或者说从后到前的),所以我们需要将styleloader写到css-loader的前面。
其实 style-loader 做的事情很简单,就是在动态创建了一个 style 标签,把 css-loader 处理的css内容放到style标签内,然后在插入到页面的 head 标签内。
安装less工具将less文件转为css文件。
使用 less-loader ,来自动使用less工具转换less到css
安装
使用
在 这里 可以查询浏览器的占有率。
Browserslist 是一个在不同的前端工具之间,共享目标浏览器和Node.js版本的配置
方案一:在 package.json 中配置:
方案二:在根目录新建 .browserslistrc 文件
方案一和方案二配置的条件都是 or 关系, 如果要同时满足条件用 and
PostCSS 是一个通过JavaScript来转换样式的工具,这个工具可以帮助我们进行一些CSS的转换和适配,比如自动添加浏览器前缀、css样式的重置,但是实现这些工具,我们需要借助于PostCSS对应的插件。
可以在 这里 查询到css样式添加规则。
因为我们需要添加前缀,所以要安装autoprefixer:
命令行直接使用使用postcss工具,并且制定使用autoprefixer:
在webpack中使用postcss就是使用 postcss-loader 来处理的。
安装
配置
第一种方案:
webpack.config.js
第二种:
也可以将plugin封装出来,在根目录新建 postcss.config.js 文件:
webpack.config.js
事实上,在配置postcss-loader时,我们配置插件并不需要使用autoprefixe,我们可以使用另外一个插件: postcss-preset-env 。
postcss-preset-env也是一个postcss的插件,它可以帮助我们将一些现代的CSS特性,转成大多数浏览器认识的CSS,并且会根据目标浏览器或者运行时环境添加所需的polyfill,也包括会自动帮助我们添加autoprefixer(所以相当于已经内置了autoprefixer)。
安装 :
使用
将 autoprefixer 替换成 postcss-preset-env 就行了:
有些插件直接写字符串就行,会自动requre:
问题复现:
假如 main.js 里面引入了 src/index.css ,而 src/index.css 里使用 @import 引入了 src/test.css ,就会出现 src/test.css 文件里的样式不会被 postcss 所处理,这时候就需要配置:
webpack.config.js
要处理jpg、png等格式的图片,我们也需要有对应的loader: file-loader
安装
配置
webpack.config.js
图片资源加载方式:
有时候我们处理后的文件备仔物名称按照一仿液定的规则进行显示,比如保留原来的文件名、扩展名,戚嫌同时为了防止重复,包含一个hash值等。这个时候我们可以使用 PlaceHolders 来完成,webpack给我们提供了大量的PlaceHolders来显示不同的内容。
介绍几个最常用的placeholder:
自定义图片打包名字和输出路径:
webpack.config.js
url-loade r和file-loader的工作方式是相似的,但是可以将较小的文件,转成base64的URI。
安装
配置
和file-loader用法很相似
在webpack5之前,加载这些资源我们需要使用一些loader,比如raw-loader 、url-loader、file-loader,在webpack5之后,我们可以直接使用 资源模块类型(asset module type) ,来替代上面的这些loader。
注意: asset module type 打包的图片资源如果用require不需要 .detault
asset/resource 发送一个单独的文件并导出 URL。之前通过使用 file-loader 实现。
自定义输出文件和文件名
webpack5 的[ext]已经包含了 .
第一种写法:
这种写法包含所有的assetModule的定义,不推荐。
webpack.config.js
第二种写法:
webpack.config.js
asset/inline 导出一个资源的 data URI。之前通过使用 url-loader 实现。
webpack.config.js
asset 可以实现url-loader的limit效果。
我们可以选择使用file-loader来处理,也可以选择直接使用webpack5的资源模块类型来处理。
webpack核心四要素总结
入口:webpack 应该使用哪个模块,来作为构建其内部依赖图的开始。进入入口起点后,webpack 会找出有哪些模块和库是入口起点(直接和间接)依赖的。参数定义了打包后的入口文件,可以是个字符串或数组或者是对象;如果是数组,数组中的所有文件会打包生成一个filename文件;如果是对象,可以将不同的文件构建成不同的文件。
可以通过在 webpack 配置中配置 entry 属性,来指定一个入口起点(或多个入口起点)。默认败氏值为 ./src。
entry: {
app: './src/main.js'
}
出口:webpack 在哪里输出它所创建的 bundles,以及如何命名这些文件,默认值为 ./dist。基本上,整个应用程序结构,都会被编译到你指定的输出路径的文件夹中。你可以通过在配置中指定一个 output 字段,来配置这些处理过程。
path: 打包文察茄散件存放的绝对路径
publicPath: 网站运行时的访问路径
filename:打包后的文件名
当我们在entry中定义构建多个文件时,filename可以对应的更改为[name].js用于定义不同文件构建后的名字。
output: {
path: config.build.assetsRoot,
filename: '[name].js',
publicPath: process.env.NODE_ENV ==='production'
? config.build.assetsPublicPath
: config.dev.assetsPublicPath
}
Loader:webpack 能够去处理那些非JavaScript 文件(webpack 自身只理解JavaScript)。loader 可以将所有类型的文件转换为 webpack 能够处理的有效模块,然后你就可以利用 webpack 的打包能力,对它们进行处理。
在webpack中JavaScript,CSS,LESS,TypeScript,JSX,CoffeeScript,图片等静态文件都是模块,不同模块的加载是通过模块加载器(webpack-loader)来统一管理的。loaders之间是可以串联的,一个加载器的输出可以作为下一个加载器的输入,最终返回到JavaScript上。
loader:loader的名称(必须)
include/exclude:手动添加必须处理的文件(文件夹)或屏蔽不需要处理的文件(文件夹)(可选);
query:为loaders提供额外的设置选项(可选)
{
test: /\.vue$/,
loader: 'vue-loader',
options: vueLoaderConfig
},
{
test: /\.js$/,
loader: 'babel-loader',
include: [resolve('src'),resolve('test'), resolve('node_modules/webpack-dev-server/client')]
}
插件:插件目的在于解决 loader 无法实现的其他事。插件是一个具有 apply 属性的 JavaScript 对象。apply 属性会被 webpack compiler 调用,并且 compiler 对象可在整个编译生命周期访问。
plugins: [
new webpack.DefinePlugin({
'process.env':require('../config/dev.env')
}),
new webpack.HotModuleReplacementPlugin(),
纳兆 new webpack.NamedModulesPlugin(), // HMRshows correct file names in console on update.
new webpack.NoEmitOnErrorsPlugin(),
//
new HtmlWebpackPlugin({
filename: 'index.html',
template: 'index.html',
inject: true
}),
// copy custom static assets
new CopyWebpackPlugin([
{
from: path.resolve(__dirname,'../static'),
to: config.dev.assetsSubDirectory,
ignore: ['.*']
}
])
]
Webpack优化构建速度
1. 使用高版本的 Webpack 和 Node.js
2. 压缩代码
1). 通过 uglifyjs-webpack-plugin 压缩JS代码
2). 通过纯败则 mini-css-extract-plugin 提取 chunk 中的 CSS 代码到单独文件,通过 css-loader 的 minimize 选项开启 cssnano 压缩 CSS。
3. 多线程/多进程构建:thread-loader, HappyPack
4. 压缩图片: image-webpack-loader
5. 缩小打包作用域
1). exclude/include (确定 loader 规则范围)
2). resolve.modules 指明第三方模块的绝对路径 (减少不必要的查找)
3). resolve.mainFields 只采用 main 字段作为入口文件描述字段 (减少搜索步骤,需要考虑到所有运行时依赖的第三方模块的入口文件描述字段)
4). resolve.extensions 尽可能减少后缀尝试的可能性
5). noParse 对完全不需要解析的库进行忽略 (不去解析但仍会打包到 bundle 中,注意被忽略掉的文件里不应该包含 import、require、define 等模块化语句)
6). ignorePlugin (完全排除模块)
7). 合理使用alias
6. 提取页面公共资源, 基础包分离
1). 使用 html-webpack-externals-plugin,将基础包通过 CDN 引入,不打入 bundle 中。
2). 使用 SplitChunksPlugin 进行(公共脚本、基础包、页面公共文件)分离(Webpack4内置) ,替代了 CommonsChunkPlugin 插件。
7. 充分利用缓存提升二次构建速度:
babel-loader 开启缓存
terser-webpack-plugin 开启缓存
使用 cache-loader 或者 hard-source-webpack-plugin
8. Tree shaking
打包过程中检测工程中没有引用过的模块并进行标记,在资源压缩时将它们从最终的bundle中去掉(只能对ES6 Modlue生效) 开发中尽枯祥可能使用ES6 Module的模块,提高tree shaking效率
禁用 babel-loader 的模块依赖解析,否则做棚 Webpack 接收到的就都是转换过的 CommonJS 形式的模块,无法进行 tree-shaking
使用 PurifyCSS(不在维护) 或者 uncss 去除无用 CSS 代码
purgecss-webpack-plugin 和 mini-css-extract-plugin配合使用(建议)
9. Scope hoisting
构建后的代码会存在大量闭包,造成体积增大,运行代码时创建的函数作用域变多,内存开销变大。Scope hoisting 将所有模块的代码按照引用顺序放在一个函数作用域里,然后适当地重命名一些变量以防止变量名冲突。
前端ES6高频面试题
前端高频面试题Web移动端
web前端AJAX高频面试题
web前端JS基础高频面试题
web前端CSS高频面试题
[img]webpack图片压缩image-webpack-loader
具体操作
1、若安装过 image-webpack-loader 先卸载
yarn remove image-webpack-loader 或者 npm uninstall image-webpack-loader
2、使用 cnpm , 这一步意改枣思就是安装 cnpm 然后将全局的 registry 设置成阿里茄肢的镜像,国内阿里比较快
npm install cnpm -g --registry=
npm config get registry //检查是否设置成功
3、使用 cnpm 安装 image-webpack-loader 会很快就安装好
cnpm install --save-dev image-webpack-loader
扩展
扩展原文链接:
--save-dev 和--save的区别
使用命令 --save 或者说不写命令核纳拆 --save ,都会把信息记录到 dependencies 中;
注: 如果先前尝试使用 yarn 或 npm 安装过,一定要先卸载掉用 cnpm 安装
webpack常用loader和plugin
webpack是一个模块打包器(module bundler),提供了一个核心,核心提供了很多开箱即用的功能,同时它可以用loader和plugin来扩展。webpack本身结构精巧,基于tapable的插件架构,扩展性强,众多的loader或者plugin让webpack显得很复杂。
webpack常用配置包括:devtool、entry、 output、module、resolve、plugins、externals等,本文主要介绍下webpack常用的loader和plugin
一般loader的使用方式分为三种:
1:在配置文件webpack.config.js中配置
2:通过命令行参数方式
3:通银滚基过内联使用
比如下锋谨面配置,可以匹配.scss的文件,分别经过sass-loader、css-loader、style-loader的处理。
sass-loader 转化sass为css文件,并且包一层module.exports成为一个js module。 style-loader 将创建一个style标签将css文件嵌入到html中。 css-loader 则处理其中的@import和url()。
官网介绍: how to write a plugin
比如我们可以在构建生成文件时,将所有生成的文件名生成到filelist.md的文件中
比如我们可以在html-webpack-plugin生成文件后刷备如新页面,完成热更新效果。
比如我们可以在构建完成后,打开一个提示窗口。
关于image-webpack-loader和imagewebpackloader 淘宝镜像安装慢的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。