在webpack中使用postcss之插件包precss
precss是一个预处理css的插件包,集成了很多postcss插件的功能,比如嵌套,变量,继承,混合,循环,判断。下面来介绍如何在webpack中使用precss。
一、新建项目
1、新建package.json
#自动生成package.json文件 npm init
2、新建webpack.config.js
module.exports = {
entry: "./main.js",
output: {
path: __dirname, // __dirname是node.js中的一个全局变量,它指向当前执行脚本所在的目录。
filename: "bundle.js"
},
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
{ loader: 'css-loader', options: { importLoaders: 1 } },
'postcss-loader'
]
}
]
},
devtool: "inline-source-map"
}
3、新建postcss.config.js
module.exports = {
plugins: [
require('precss'),
require('autoprefixer')
]
}
4、新建index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>postcss的插件包precss</title>
</head>
<body>
<div class="vars">变量</div>
<div class="nested">
<p>嵌套</p>
<strong>粗体加黑</strong>
</div>
<div class="mymixin">混合</div>
<div class="extended2">继承</div>
<div class="ani">引入,鼠标放上来</div>
<div class="condition">条件</div>
<script type="text/javascript" src="bundle.js"></script>
</body>
</html>
5、新建css/imported.css,css/style.css
/* imported.css */
body {
background: red;
}
.ani {
width: 400px;
height: 50px;
background: yellow;
transition: width 2s;
}
.ani:hover {
width: 800px;
}
/* style.css */
@import './imported.css';
*{
text-align:center;
margin:;
padding:;
}
$color: #CA1F2D;
.vars{
line-height:30px;
background:$color;
color:white;
}
.nested{
background:#FFA500;
padding: 8px 0;
p{
margin-top:;
color:white;
}
strong{
font-weight:normal;
&:after{
content:'这是粗体的after伪类';
margin-left: 15px;
color:grey;
}
}
}
%placeholder1{
background: #00BD00;
line-height: 35px;
}
.extended1{
font-size: 15px;
@extend %placeholder1;
}
@define-extend placeholder2{
background: #00BD00;
line-height: 35px;
}
.extended2{
font-size: 18px;
@extend placeholder2;
}
.placeholder3{
background: #00BD00;
line-height: 35px;
}
.extended3{
font-size: 25px;
@extend .placeholder3;
}
@define-mixin amixin $val:10px{
.mymixin{
color: yellow;
padding: $val 0;
@mixin-content;
}
}
@mixin amixin{
background: #00BBFE;
}
@mixin amixin 15px{
font-weight: bold;
}
@define-mixin tcondition $val:5{
.condition{
background: #4169e1;
@mixin-content;
@if $val < 5{
color: black;
} @else {
color: white;
}
}
}
@mixin tcondition{
font-size: 12px;
}
@mixin tcondition 3{
font-size:15px;
}
.for-tab{
float: left;
@for $i from 1 to 4 {
.tab-$i {
margin-right:5px;
background:black;
width: $(i)px;
}
}
}
.for-menu{
@for $i from 1 to 5 by 2 {
p:nth-of-type($i) {
margin-left: calc( 100% / $i );
background:black;
}
}
}
.each{
$loveAnimal: dog, tiger, lien;
@each $icon in $loveAnimal{
.icon-$(icon) {
/*background: url('icons/$(icon).png');*/
background:#f00;
}
}
}
6、新建main.js
import './css/style.css';
二、安装webpack的loader
cnpm i -D css-loader style-loader postcss-loader
三、安装postcss的插件
cnpm i -D precss autoprefixer
四、修改package.json文件
{
"name": "mypcs",
"version": "1.0.0",
"description": "this is my first postcss project",
"main": "main.js",
"scripts": {
"start": "webpack-dev-server --open",
"build": "webpack-dev-server",
"result": "webpack"
},
"repository": {
"type": "git",
"url": "mypcs"
},
"keywords": [
"postcss"
],
"author": "camille",
"license": "ISC",
"devDependencies": {
"autoprefixer": "^7.1.4",
"css-loader": "^0.28.7",
"postcss-loader": "^2.0.6",
"precss": "^2.0.0",
"style-loader": "^0.18.2"
}
}
五、运行代码
npm run start
六、刷新视图页面看效果
七、总结
本篇文章介绍了如何在webpack中使用postcss的插件包precss,从新建项目到运行代码,思路比较清晰,下面主要总结我遇到的抓狂问题和解决方案,以及问题带给我的新思考,希望自己每解决一个问题,都能触类旁通,举一反三。讨厌问题,但是不拒绝问题,更不惧怕问题,因为方法总是有的,只要肯钻研。
1、问题描述
一开始我随意取了个文件夹名mypcs2,开发结束时,觉得自己的包名不太美妙,就重命名文件夹mypcs以及修改package.json文件中的name值。重新运行代码,竟然出现很多报错,说无法解析某个loader。真是郁闷!!!明明之前就安装了各种依赖的loader,瞧,文件夹里loader都在呢,为啥这会儿就不行了呢?代码呀什么的,我都没改呀,就修改了包名和package.json文件中的name值,有啥错?
2、问题分析
事实证明,大错特错!!!因为安装loader的时候,是明确在mypcs2包里进行的。现在要运行mypcs包,自然要在mypcs包里安装各种loader。
3、解决方案
把原来的node_modules文件夹删掉,然后重新安装loader。
4、深度思考
如果是插件,也会遇到上述问题,所以这里温馨提示,一开始确定好包名后,就不要再动了。不要修改包名,也不要复制一个旧包,在旧包上修修改改,做新项目。每做一个新包,都要按规矩办事,从头开始!切莫投机取巧,表面省事,结果给自己挖了个大坑,然后还不知道怎么爬出来,唉!奈何postcss的问题文档如此少,还很简陋。
另外,注意包名规则,比如postcss已经存在,就不要再用它了,选个别的名字,比如我的包名mypcs。
在webpack中使用postcss之插件包precss的更多相关文章
- 在webpack中使用postcss之插件cssnext
学习了precss插件包在webpack中的用法后,下面介绍postcss的另一个重要插件cssnext,步骤没有precss用法详细,主要介绍css4的语法,cssnext目前支持了部分新特性,你可 ...
- webpack中插件 prerender-spa-plugin 来进行SEO优化(二十四)
vue.react对于开发单页应用来说带来了很好的用户的体验,但是同样有缺点,比如首页加载慢,白屏或SEO等问题的产生.为什么会出现这种情况呢?我们之前开发单页应用是这样开发的,比如首页 index. ...
- 深入浅出的webpack构建工具---PostCss(五)
一:PostCss是什么? PostCss是一个样式处理工具,它通过自定义的插件和工具生态体系来重新定义css.它鼓励开发者使用规范的css原生语法编写代码,然后配置编译器转换需要兼容的浏览器版本, ...
- PHPCMS v9插件包整合
插件包是已经修改好的文件集合,您可以直接将插件包复制到您的网站中. 注意:插件包会替换phpcms中的文件,如果您修改过phpcms中的文件请先备份好旧的文件. 1.下载插件包 2.解压 3.复制里面 ...
- webpack中打包拷贝静态文件CopyWebpackPlugin插件
copyWebpackPlugin: 作用:用于webpack打包时拷贝文件的插件包 安装:npm install copyWebpackPlugin@版本号 使用:// copy custom st ...
- webpack 中常用安装插件的一些命令
1:npm install html-webpack-plugin --save-dev //自动快速的帮我们生成HTML.2:npm install css-loader style-loader ...
- webpack中clean-webpack-plugin插件使用遇到的问题及解决方法
webpack 会生成文件,然后将这些文件放置在 /dist 文件夹中,但是 webpack 无法追踪到哪些文件是实际在项目中用到的. 通常,在每次构建前清理 /dist 文件夹,是比较推荐的做法,因 ...
- webpack中如何使用vue
1.安装 vue包:npm i vue -S 2.由于在webpack中,推荐使用.vue这个组件模版文件来定义组件,不然会出现vue.js移动和一些高级语法的不支持,因此需要安装能解析这种文件的lo ...
- vue项目中postcss-pxtorem的使用及webpack中的配置 css中单位px和em,rem的区别
移动手机版要求我们在制作嵌入h5的时候去适配不同的手机.适配有多重模式,有flex.百分比等.字体大小的控制也有px.百分比.rem等单位,webpack中 px转rem. vue项目中postcss ...
随机推荐
- java 多线程面试
一.多线程的创建 1.多线程的创建 (1).继承Thread类 (2).实现Runnable接口 2.两种启动线程方法的区别 1.共同点 必须调用Thread 产生线程,然后调用start()方法 开 ...
- Netty+SpringBoot写一个基于Http协议的文件服务器
本文参考<Netty权威指南> NettyApplication package com.xh.netty; import org.springframework.boot.SpringA ...
- SpringBoot注册Servlet、Filter、Listener
SpringBoot默认是以jar包的方式启动嵌入式的Servlet容易来启动SpringBoot的Web应用,没有web.xml文件 因此我们可以使用以下方式来注册Servlet.Filter.Li ...
- Django 利用 Pagination 简单分页
Django自身提供了一些类来实现管理分页,数据被分在不同的页面中,并带有“上一页/下一页”标签.这个类叫做Pagination,其定义位于 django/core/paginator.py 中. 一 ...
- 用secureCRT操作ubuntu终端
用secureCRT操作ubuntu终端 ubuntu下先安装ssh windows下win+R再输入ubuntu的ip地址 ubuntu 检测端口号的命令 netstat -antp 下载到 ...
- linux统计某个特定文件名的大小总和【原创】
[hch@EAISRVBJ2 log]$find ./ -name "test_chs_00*"|xargs du -ck|grep total|awk 'BEGIN{sum=0} ...
- 016_nginx运维问题总结
一.关于nginx请求包过大的解决思路 message-api.jyall.me.conf nginx报错问题问题定位,经分析跟接入navigator后关联不大,可参考一下结论连接超时抓包分析了一下每 ...
- 从SDP中至少要看到那些东西?
最近对通过抓包获得了很多的SDP封包,对这些SDP媒体协商过程很是好奇,为什么不同的sip终端所提供的SDP包不尽相同,为什么同一台FS对不同的sip终端发送不同的SDP? 对我菜鸟级别的我们,我分享 ...
- python语法小应用---列表和元组
声明:本文章为参考总结CSDN上知识点所获,只是用来总结自己学习而用,如有侵权,会删除! 列表(list): 列表就像一个线性容器,但是比C++的 lis t扩展多得多 列表里的元素可以是相同类型,也 ...
- python魔法函数(二)之__getitem__、__len__、__iter__
魔法函数会增强python类的类型,独立存在 __getitem class Company: def __init__(self, employees): self.employees = empl ...