【webpack4x】postcss-loader无法自动添加浏览器前缀问题

没有设置浏览器类型导致的无法生效

// 1. npm install postcss-loader autoprefixer --save

// 2. 在项目根目录下新建 postcss.config.js
// 注意: 如果没有配置在哪些浏览器上自动添加前缀,会无法添加成功
// postcss.config.js
module.exports = {
    plugins: [
        require('autoprefixer')({
            "browsers": [
                "defaults",
                "not ie < 11",
                "last 2 versions",
                "> 1%",
                "iOS 7",
                "last 3 iOS versions"
            ]
        })
    ]
}

// 3. 在webpack配置文件中配置对应
...
{
    test: /\.css$/,
    use: [‘style-loader’, 'css-loader', 'postcss-loader']
}, {
    test: /\.sass$/,
    use: ['style-loader', 'css-loader', 'postcss-loader', 'sass-loader']
}

上述可以完成添加浏览器前缀,但是会报个警告
Replace Autoprefixer browsers option to Browserslist config.
Use browserslist key in package.json or .browserslistrc file.

Using browsers option cause some error. Browserslist config
can be used for Babel, Autoprefixer, postcss-normalize and other tools.

If you really need to use option, rename it to overrideBrowserslist.

Learn more at:
https://github.com/browserslist/browserslist#readme
https://twitter.com/browserslist

解决办法

// postcss.config.js 改
// postcss.config.js
module.exports = {
    plugins: [
        require('autoprefixer')()
    ]
}

// 然后在package.json中添加配置项
"browserslist": [
    "defaults",
    "not ie < 11",
    "last 2 versions",
    "> 1%",
    "iOS 7",
    "last 3 iOS versions"
  ]

github文档地址

在单独打包css文件时遇到的问题

ERROR in ./src/index.sass
Module build failed (from ./node_modules/[email protected]@mini-css-extract-plugin/dist/loader.js):
ReferenceError: document is not defined

{
    test: /\.css$/,
    use: [MiniCssExtractPlugin.loader, 'css-loader', 'postcss-loader']
}, {
    test: /\.sass$/,
    use: [MiniCssExtractPlugin.loader,  'css-loader', 'postcss-loader', 'sass-loader']
}

mini-css-extract-plugin是将css打包成独立的css文件,而style-loader是将css以style标签的方式插入样式,是不是彼此存在冲突,于是删除style-loader发现问题解决

原文地址:https://www.cnblogs.com/fe-linjin/p/11326522.html

时间: 2024-11-07 17:59:56

【webpack4x】postcss-loader无法自动添加浏览器前缀问题的相关文章

使用scss为css样式自动添加浏览器前缀

当一个浏览器实现一个新的属性.值或者选择器,而这个特征还不是处于候选推荐标准状态的时候,这属性的前面会添加一个前缀以便于它的渲染引擎识别. 浏览器使用前缀来尝试一些新属性.值和选择器,即使他们还没有最终定稿--这是一个好的测试方法,在必要时也可以对他们进行修正或者重新定义.如果浏览器一上来就直接使用标准属性,那他们就会被直接锁定在这个特征的实现上而不易变更. 开发这可能会立即使用无前缀的属性,而且也会一直期望它能够保持同样的表现不再变更.如果浏览器在之后对这个属性做了变更,不管是由于它的实现存在

webpack4 css添加浏览器前缀 postcss-loader

自动添加浏览器前缀 ,我们这里使用postcss-loader 首先  cnpm install --save-dev postcss-loader autoprefixer 我这里用的cnpm ,npm也可以下载 接下来是配置 在网上查了相关文档发现需要新建一个 postcss.config.js 文件来对 postcss-loader 配置. 第一种配置: 新建与 webpack.config.js 同级的 postcss.config.js 文件 module.exports = { pl

webpack通过postcss-loader添加浏览器前缀

在webpack中,我们可以很方便的使用autoprefixer来为css3属性添加不同的浏览器前缀. 首先,需要安装autoprefixer不用多说了,其次是安装postcss-loader(npm install --save-dev postcss-loader) 接下来在webpack.config.js文件里添加如下代码(红圈部分): 接下来,在webpack.config.js的同级目录下新建postcss.config.js文件,配置如下: module.exports = { p

sublime 自动添加兼容前缀插件autoprefixer

1.确保Node.js已经安装,未安装请 点击 这里>> 2.下载autoprefixer插件 https://github.com/sindresorhus/sublime-autoprefixer 3.打开sublime ,选择菜单 Preferences >  Browse Packages 将压缩包解压 4.设置快捷键,选择菜单Preferences > Key Bindings – User [ { "keys": ["ctrl+alt+sh

webpack配置css浏览器前缀

webpack打包时,css自动添加浏览器前缀.我们需要用到一个Loader:postcss-loader,和一个插件:autoprefixer 安装 npm i postcss-loader autoprefixer -D 方法一 1.在webpack.config.js文件中,找到module下的rules属性,在里面添加一个对象,完整代码如下: module:{ rules:[ { test:/\.scss$/, use:['style-loader','css-loader','sass

CSS浏览器前缀,HTML5新增标签

1.浏览器样式前缀 为了让CSS3样式兼容,需要加上 例如:-ms- 兼容IE浏览器-moz 兼容Firefox-webkit- 兼容chrome和safaridiv{-ms-transform:rotate(30deg);...........} 2.自动添加浏览器前缀 目前的状态是,有些CSS3属性需要加前缀,有些不需要加,有些只需加部分,可以用插件,安装autoprefixer 3.HTML5新增标签 (1)<header> 页面头部.页眉(2)<nav>页面导航(3)<

CSS3 浏览器前缀

浏览器样式前缀 为了让CSS3样式兼容,需要将某些样式加上浏览器前缀: -ms- 兼容IE浏览器-moz- 兼容firefox-o- 兼容opera-webkit- 兼容chrome 和 safari 比如: div { -ms-transform: rotate(30deg); -webkit-transform: rotate(30deg); -o-transform: rotate(30deg); -moz-transform: rotate(30deg); transform: rota

CSS变量和浏览器前缀

一.CSS变量 CSS变量是CSS的新特性,大多数浏览器都实现了这个功能,使用CSS变量有利代码复用,而且当我们修改变量值时,所有引用该变量的属性都会发生改变. 定义变量后可以有两种使用方法,第一种时var(var_name),第二种时var(var_name,defaultvalue);当变量不存在时使用默认值. 二.浏览器前缀 实现浏览器前缀可以让我们使用新的属性,且不行影响该属性成为标准后的效果.不同的浏览器的前缀不一样. .container { display: -webkit-box

webpack3中使用postcss-loader和autoprefixer给css3样式添加浏览器兼容

1.在webpack中需要处理css必须先安装如下两个loader npm install --save-dev css-loader style-loader 2.要处理sass和添加浏览器前缀需要下载如下插件和loader //sass-loader依赖于node-sass,所以还要安装node-sass//postcss-loader autoprefixer postcss 处理浏览器兼容 npm install --save-dev sass-loader node-sass post