首页
导航
博客
电子书
算法
众创
代码
随贴
关于我们
您好,欢迎来到码863代码分享网! 请
[登录]
/
[注册]
搜 索
标题:
*
140
字
TAG标签:
(用空格隔开)
30
字
恢复历史版本:
请选择分类
html
python
javascript
php
sql
c
c++
c#
java
plain
所有人可见
仅自己可见
编辑器:UEditor
编辑器:TinyMCE
编辑器:Editor.md
HTML转MD
HTML转MD2
<p>本文主要讲如何使用Grunt实现less文件压缩。</p><h2>一 说明</h2><p>less是非常常用的样式框架之一,Grunt也提供了可以编译和打包less样式文件的插件:grunt-contrib-less。</p><p><strong>实现原理分析:</strong></p><p>分析该插件源码,可以发现该插件实际只做了对样式文件的各种处理,真正进行编译less文件到css文件,实际还是调用的less库的less.render方法实现的。</p><p>如下是grunt-contrib-less库源码:</p><p><img src="/ueditor/php/upload/image/20200107/1578394587326625.png" alt="" style="border: 0px; max-width: 800px; height: auto;"/></p><h2>二 安装</h2><pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important;">npm install grunt-contrib-less --save-dev</pre><h2>三 加载任务</h2><pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important;">grunt.loadNpmTasks('grunt-contrib-less');</pre><h2>四 配置</h2><p>该插件配置吧比较简单,下边只列出作者用到的几个常用属性:</p><h3>4.1 files</h3><p>设置要处理的less文件地址和输出的css文件地址。</p><pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important;">1 files: {2 'dist/build.css': 'theme/build.less'3 }</pre><h3>4.2 options</h3><p>其它各种配置都在options中,具体属性如下:</p><p><strong>paths:</strong></p><p> 类型: String Array Function<code><br/></code></p><p> 默认值: 根目录.</p><p> 意义:定义@import加载文件的路径。默认值是文件的当前路径。 如果指定一个函数的源文件路径将是第一个参数。您可以返回到使用字符串或路径的数组。</p><p><strong>rootpath:</strong></p><p> 类型:String</p><p> 默认值:“”</p><p> 意义:所有文件都是基于这个路径</p><p><strong>compress:</strong></p><p> 类型:bool</p><p> 默认值:false</p><p> 意义:压缩编译之后的css文件,即删除css文件中的空行和空格</p><p><strong>cleancss:</strong></p><p> 类型: bool</p><p> 默认值: false</p><p> 意义: 使用<a href="https://www.npmjs.org/package/clean-css" target="_blank" style="color: rgb(51, 102, 153); text-decoration-line: none; background: transparent;">clean-css</a>来压缩css文件</p><p><strong>cleancssOptions:</strong></p><p> 类型: Object</p><p> 默认值: none</p><p> 意义:如果设置cleancss为true的话,此项才起效果,配置cleancss的选项</p><p><strong>ieCompat:</strong></p><p> 类型:bool</p><p> 默认值:true</p><p> 意义:编译之后的css文件适应于ie8</p><p><strong>optimization:</strong></p><p> 类型: Integer</p><p> 默认值:null</p><p> 意义:设置优化等级,数字越小,在树中创建的节点越少。会影响到调试。</p><p><strong>strictImports:</strong></p><p> 类型:bool</p><p> 默认值:false</p><p> 意义:如果设置为true,less将会以标准的模式来加载@import引用的文件</p><p><strong>strictMath:</strong></p><p> 类型:bool</p><p> 默认值:false</p><p> 意义:如果设置为true,表达式需要用括号括起来</p><p><strong>strictUnits:</strong></p><p> 类型:bool</p><p> 默认值:false</p><p> 意义:如果设置为true,less将会验证单位是否合法</p><p><strong>syncImport:</strong></p><p> 类型:bool</p><p> 默认值:false</p><p> 意义:异步加载通过@import引用的文件</p><p><strong>dumpLineNumbers:</strong></p><p> 类型:string(comments, mediaquery,all)</p><p> 默认值:false</p><p> 意义:</p><p><strong>relativeUrls:</strong></p><p> 类型:bool</p><p> 默认值:false</p><p> 意义:重写url为相对url</p><p><strong>customFunctions:</strong></p><p> 类型: Object</p><p> 默认值: none</p><p> 意义:自定义函数,一般是全局功能的。</p><p><strong>report:</strong></p><p> 类型: string ('min', 'gzip')</p><p> 默认值:min</p><p> 意义:何种方式来压缩文件,gzip更消耗时间</p><p><strong>sourceMap:</strong></p><p> 类型:bool</p><p> 默认值:false</p><p> 意义:是否使用文件映射</p><p><strong>sourceMapFilename:</strong></p><p> 类型:string</p><p> 默认值:none</p><p> 意义:编写源与给定的文件名映射到一个单独的文件。</p><p><strong>sourceMapUrl:</strong></p><p> 类型:string</p><p> 默认值:none</p><p> 意义:重写css文件中的源映射。</p><p><strong>sourceMapBasepath:</strong></p><p> 类型:string</p><p> 默认值:none</p><p> 意义:设置在源映射中的less文件路径的基本路径。</p><p><strong>sourceMapRootpath:</strong></p><p> 类型:string</p><p> 默认值:none</p><p> 意义:在map文件中的less文件根目录</p><p><strong>outputSourceFiles:</strong></p><p> 类型:bool</p><p> 默认值:false</p><p> 意义:将less文件放到Map文件中,替换引用。</p><p><strong>modifyVars:</strong></p><p> 类型: Object</p><p> 默认值: none</p><p> 意义:重写全局变量</p><p><strong>banner:</strong></p><p> 类型:string</p><p> 默认值: none</p><p> 意义:标记,编译之后文件顶部标记</p><h2>五 实战</h2><p>下边是一个实例项目。</p><h3>5.1 整体项目目录:</h3><p><img src="/ueditor/php/upload/image/20200107/1578394588205712.png" alt="" style="border: 0px; max-width: 800px; height: auto;"/></p><h3>5.2 gruntfile.js文件中配置:</h3><p><br/></p><pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important;">module.exports = function(grunt) { grunt.initConfig({ // 清理空文件夹 clean: { foo1: { src: ['dist/*'] } }, less: { css: { options: { compress: true, strictMath: true }, files: { 'dist/build.css': 'theme/build.less' } } } }); grunt.loadNpmTasks('grunt-contrib-less'); grunt.loadNpmTasks('grunt-contrib-clean'); // 默认被执行的任务列表。 grunt.registerTask('default', [ 'clean', 'less' ]); };</pre><p><br/></p><h3>5.3 入口文件build.less代码很简单:</h3><pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important;">@import "a.less";</pre><h3>5.4 核心less文件a.less代码如下:</h3><p><br/></p><pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important;">@width: 80px; @color: 'red'; .a-title { color: @color; width: @width; height: 100px; background-color: blueviolet; }</pre><p><br/></p><h3>5.5 执行grunt命令后输出文件build.css如下(下边是格式化后的):</h3><pre style="margin-top: 0px; margin-bottom: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important;">.a-title { color: 'red'; width: 80px; height: 100px; background-color: blueviolet }</pre><h2>六 实战代码下载地址</h2><p>上边实战源码获取地址:</p><p>https://gitee.com/bangbangwa/grunt/blob/master/grunt-contrib-less-test.rar</p><h2>参考资料&内容来源</h2><p>Grunt官网:https://www.npmjs.com/package/grunt-contrib-less</p><p><br/></p>
CopyRight 2002~2023 精通2100网 联系邮箱:qqtxt@163.com
版权所有:精通2100网
湘ICP备2023018646号-1
MYSQl共执行 4 个查询,用时 0.0019230842590332 秒,PHP脚本用时 0.004198 秒,占用内存 0.550 MB,Gzip 已启用