本身写了本丹佛掘金队(Denverca88官方会员登录 Nuggets)小册

能够不用夸张的说,那本小册恐怕是方今社区中最完全的把 npm script
和前端工作流相结合并利用到骨子里项目中的文字 + 录像版教程了。

Grunt/居尔p
都以node.js下的模块,不难的话是自动化任务运维器,两者都有社区及大气的插件支撑,在全体的自动化学工业具领域里,那五头是最佳的前端自动化营造筑工程具。
  Grunt和具有grunt插件都是根据nodejs来运行的,倘若您的计算机上尚未nodejs,就去安装吧。安装nodejs分外简单,完全傻瓜式、下一步下一步下一步、的装置格局,那里不再赘言。去
https://nodejs.org/
上,点击页面中卓殊品蓝、大大的“install”按钮即可。
  安装了nodejs之后,能够在你的控制博洛尼亚输入“node
-v”来查看nodejs的本子,也有意无意试验nodejs是或不是安装成功。

网络大潮和前端社区的蓬勃发展让现代前端项指标繁杂比 5年前翻了累累倍,前端工作流中也油然则生了更进一步多工程化的环节,比如代码风格检查、自动化测试、自动化营造、自动化铺排、服务监督、注重管理等。

【grunt】前端自动化工具

官网:gruntjs.com
前提:基于nodejs
阐明环境 node -v
npm -v node的三个包管理器
新的node版本自带npm,老的不带

咱俩面临什么样难点?

大部前端工程师的工作流只怕都离不开 gulp、grunt、webpack
那样的重量级创设工具,而是或不是能自如使用那些工具将另行职分自动化也是工程师素质的首要体现,作者作者也是那些自动化学工业具的忠贞观者,因为它们确实能帮自个儿化解难点。但几番灾殃之后,你大概早就如自个儿壹样感受到分明的痛点:比如对插件依赖严重(开发者的自由度受限),插件和后面部分工具文书档案脱节,调试变的更复杂等,在那点上,大家并不孤独,社区1度有人对下面的题材作出总括并写了稿子:Why
I left gulp and grunt for npm
scripts

就自身要好的亲身经历,小编曾接手维护过使用了 3玖 个 gulp
插件的体系,因为项目运营较早,部分插件所依靠的根底工具版本都相比老,当那个插件所依靠的功底工具升级之后,gulp
插件本人并不曾革新的那么快,笔者只好 fork 原仓库去怜惜在那之中的版本,而当
gulp 公布了新本子之后,升级插件更是一场辛苦的持久战。

无声考虑下来,下边那种复杂其实并不曾供给,在软件工程里面有个首要的规格,就是简单性,越是简单的事物尤其可信,从可能率论的角度,任何系统环节更多稳定性越差。

选择流程

大家该怎么消除难题?

比较而言,直接动用 npm 内置的 script
机制已经被许多开发者注脚是越来越好的精选,它能减轻甚至免去下面的痛点:你能够直接接纳海量的
npm
包来实现你的职务、不必要在插件文书档案和基础工具文档间来回切换,最要紧的点,不选拔grunt
之类的营造筑工程具能让你的技巧栈相对更不难,而自小编在做技术选用是遵照的为主条件是简单化,简单才有极大希望不难让外人上手。

应用 npm script 各个基础工具你都得以随手拈来,只要你会动用
npmjs.com
去搜索,或者去
libraries.io
上搜索。

可能有同学会反问,Talk is cheap, show me the data,上面那张图是最棒的求证:

ca88官方会员登录 1

更精确的数据是:截止 2017年11月,grunt 插件 6309 个,gulp 插件 3367 个,webpack 插件数量 2174 个,而 npm 包多达 594438 个,并且还在飞速增长

那 npm script 为啥平素不未有在创设筑工程具中变为主流呢?恐怕半数以上人认为使用
npm script
需求很强的通令行功底、恐怕它不够强大、或然它无法跨平台。能够很负总责的说,社区上扬到如今,上边的担心都是剩下的。

1、安装grunt命令环境(想要用命令运维grunt必须装)

npm install grunt-cli -g
-cli创设命令行 -g全局

如何越来越快更加好的消除难点?

那也是丹佛掘金队(Denver Nuggets)小册《使用 npm script
营造超溜前端工作流》
的切入点,小编在这本小册中会用
step-by-step 的方式上课现代前端工作流中的 npm script
用法。固然你是命令行小白,也能轻松跟上,小册会以实际前端项目为底板稳步介绍更加高阶的话题。学完那本小册,你将纯熟使用
npm script 塑造前端工作流要用的各样小工具和技艺。

小册的内容划分为 四 篇:

  • 入门篇:创立和平运动行 npm script,熟稔和清楚基本套路,分 三 小节;
    • 一.一 创造并运营 npm script 命令
    • 一.2 运转八个 npm script 的种种姿势
    • 1.叁 给 npm script 传递参数和增加注释
  • 进阶篇:原来 npm script 还足以那样用?分 叁小节,介绍生命周期机制、内置和自定义变量的阐明和选取、命令行自动补全等话题;
    • 二.一 使用 npm script 生命周期钩子
    • 二.2 在 npm script 中使用环境变量
    • 二.叁 实现 npm script 命令自动补全
  • 高阶篇:怎样管理复杂的 npm script?分 叁 小节,介绍;
    • 三.壹 让 npm script 跨平台包容
    • ca88官方会员登录,3.2 用 scripty 管理复杂的 npm script
    • 3.三 用 node/shell 脚本替代复杂的 npm script
  • 实战篇:如何用 npm script 来帮衬前端工作流?分 5 小节;
    • 四.1 监听文件变化并活动运维 npm script
    • 四.二 结合 live-reload 落成自动刷新
    • 4.3 在 git hooks 中运行 npm script
    • 四.四 用 npm script 达成创设流水生产线
    • 四.5 用 npm script 达成劳务自动化运营

为了有利于大家阅读小册时更是简单上手,自个儿为小册的各样章节都录制了摄像教程(录制下载地址在小册末尾),想驾驭自小编录制教程风格和材质的同校能够看自身专栏的野史篇章:styled-componentsjavascript-async-await。录像目录如下:

ca88官方会员登录 2

video-toc.png

2、验证是还是不是安装

grunt –version
如上评释 grunt命令环境已经装好

符合哪些群众体育?

  • 拥抱 无情的推动自动化 开发理念的工程师,不限前端;
  • 感受到 grunt、gulp 之类工具的笨重和辛苦,想要更轻量级的化解方案;
  • 想玩转 npm script,不断打磨本身硬技能,进步普通工效的校友;
  • 甘当因为自身编写小册和摄像录制而付出的脑子而请本身喝杯咖啡(1玖.玖元)的同窗;

三、进入地面文件 cd 文件名/文件名

grunt供给七个文本:
package.json 项指标配置文件
布置一体项目意况,项指标名称,项目标本子,项目标撰稿人,项目信赖的模块(插件)
Gruntfile.js 配置grunt 设置插件的使用

你会学到什么?

  • 接头使用 npm script 的最主要知识要点;
  • 左右 25 个 npm script 实战技能,章节虽少,不过各种章节都以抽水的;
  • 赢得使用 npm script 和各样小工具化解各个前端工程自动化需要;
  • 取得自个儿久久积淀和迭代出来的 npm script 集合,直接选用到花色中;

4、npm init

创建出package.json
name 项目名称(千万别用grunt)

您要准备什么?

  • Node.js
    运维环境,最佳是 v捌.x 以上版本,提议采纳
    nvm
    来安装,Windows 下的用户能够应用
    nvm-windows
  • 可以用来输入和执行命令的终极程序,比如 Mac 下的
    iTerm,或者
    Windows 下的 cmd;
  • 2小时的空余时间,读完那本小册,并能本人左手实践,因为纸上得来终觉浅;

伍、安装本地grunt

npm install grunt –save-dev

读者反映怎么着

下边是到近日甘休小册收集到的有个别读者反映,对于各位读者的留言,作者都会认真回复,要是你加了读者沟通群,在群里提到的难题,小编也会全力以赴解答。

ca88官方会员登录 3

ca88官方会员登录 4

ca88官方会员登录 5

陆、要求居安虑危文件

Gruntfile.js 编写职分

作者简介

自个儿是王仕军,爱折腾、爱享受的前端老驾车员,实名在网上生活了 五 年有余,6年以上前端开发经验(实际是 8 年,哈哈),四年重型互连网企业管理办公室事经验;丹佛掘金队专栏小编;熟悉(是的,到后日自己还不敢说通晓)
JavascriptNode.js,对开发效能和软件品质有极端追求。指标是
Be a Power User of Everything

多谢读到这里,希望自身写的东西对您有用!

柒、编写具体职分

module.exports=function(grunt){
    console.log('111')
    }

保留模块的两种形式

a)npm install 模块名

把此模块,安装到本项目目录中

b)npm install 模块名 –save

不仅仅会把模块安装到本目录,会写入package.json文件中,写到dependencies选项中

c)npm install 模块名 –save-dev 推荐的

不单会把模块安装到本目录,会写入package.json文件中,写到devDependencies选项中


常用插件下载:

插件:
http://gruntjs.com/plugins
有关grunt插件的归类:
一、grunt团队温馨费用的contrib
贰、第贰方编写的
grunt常用插件:

    grunt-contrib-watch 监听变化

    grunt-contrib-uglify 压缩js

    grunt-contrib-cssmin 压缩css

    grunt-contrib-htmlmin 压缩html

    grunt-contrib-imagemin 压缩图片

比较常用的

    grunt-contrib-concat 合并文件

    grunt-contrib-clean 删除文件以及文件夹

    grunt-contrib-cope 复制东西

    grunt-contrib-jshint 检测js代码语法

    grunt-contrib-less 编译less文件

下载插件(在命令行中)
npm install grunt-contrib-less –save-dev

编写流程:

   module.exports=function(grunt){
//1.导入模块
grunt.loadNpmTasks('grunt-contrib-uglify');

//2配置具体任务
grunt.initConfig({
    主任务:{    //主任务名和模块名一样(uglify)
        a:{  //子任务名随便
            src:'XXX',  //源文件
            dest:'XXX' // 目标文件
        }
    }
});
//3注册一个默认任务
grunt.registerTask('default',['uglify','htmlmin']);
  }

运行:
grunt 主职责名
grunt 主职务名:次义务名
grunt

貌似品种中别人不会把下载好的给你,只会把计划文件给您,
只给品种和Gruntfile.js,package.json
1、npm install 下载package.json中devDependencies里的享有重视模块
2、grunt
grunt:目录名称不能够用括号

一体化编写步骤:Gruntfile.js

module.exports=function(grunt){
    //1.导入模块
    grunt.loadNpmTasks('grunt-contrib-uglify');
    grunt.loadNpmTasks('grunt-contrib-cssmin');
    grunt.loadNpmTasks('grunt-contrib-htmlmin');
    grunt.loadNpmTasks('grunt-contrib-imagemin');
    grunt.loadNpmTasks('grunt-contrib-watch');
    //2配置具体任务
    grunt.initConfig({
        uglify:{
            a:{
                src:'src2/js/*.js',
                dest:'build/js/main.js'
            }
        },
        cssmin:{
            a:{
                src:'src2/css/*.css',
                dest:'build/css/main.css'
            }
        },
        htmlmin:{
            options:{
                removeComments:true,
                collapseWhitespace:true
            },
            a:{
                src:'src2/new.html',
                dest:'build/new.html'
            }
        },
        imagemin:{
            a:{
                expand:true,
                cwd:'src2/img',
                src:'*.gif',
                dest:'build/img'
            }
        },
        watch:{
            a:{
                files:['src2/new.html','src2/css/*.css'],
                tasks:['htmlmin','cssmin']
            }
        }
    });
    //3注册一个默认任务
    grunt.registerTask('default',['uglify','cssmin','htmlmin','imagemin','watch']);
}

gulp:

跟grunt一模壹样,然而要比grunt块,gulp原理的贰进制的流,grunt是文件
官网:gulpjs.com

着力流程

一、安装八个gulp的命令环境

npm install gulp-cli -g

贰、验证是不是是ok的

gulp –version

3、准备几个公文

gulpfile.js 任务编写文件
自动生成package.json
命令:npm init 一路回车

4、npm install gulp –save-dev //下载本地的gulp

5、下载gulp的插件

gulp常用插件:
gulp-watch 监听变化

            gulp-uglify 压缩js

            gulp-cssmin 压缩css

            gulp-htmlmin 压缩html

            gulp-imagemin 压缩图片

六、编写职务

//1、引用模块
      var uglify =require(‘gulp-uglify’)
      //2、配置任务
      gulp.task('uglify(这是任务名 随便起)',function(){
         gulp.src('src/a.js')
         .pipe(uglify({mangle:false}))
         .pipe(gulp.dest('dest'));
      })
      //3、配置默认项
      gulp.task('default',['任务名']);

   注:gulp中内置的watch不用下载
      gulp.watch('文件名',['任务名'])

1体化编写步骤:gulpfile.js

//引入模块
var gulp=require('gulp');
var uglify=require('gulp-uglify');
var htmlmin=require('gulp-htmlmin');
var cssmin=require('gulp-cssmin');
var imagemin=require('gulp-imagemin');
var concat=require('gulp-concat');

//编写任务
gulp.task('uglify:css',function(){
    gulp.src('src/css/*.css')
    .pipe(cssmin())
    .pipe(gulp.dest('build/css'))
});
gulp.task('uglify:js',function(){
    gulp.src('src/js/*.js')
    .pipe(uglify())
    .pipe(concat('main.min.js'))
    .pipe(gulp.dest('build/js'))
});
gulp.task('uglify:img',function(){
    gulp.src('src/img/*.gif')
    .pipe(imagemin())
    .pipe(gulp.dest('build/img'))
});
gulp.task('uglify:html',function(){
    gulp.src('src/new.html')
    .pipe(htmlmin({
        collapseWhitespace:true
    }))
    .pipe(gulp.dest('build/new.html'))
});
//监听模块
gulp.watch('src/new.html',['uglify:html']);
//注册默认任务
gulp.task('default',['uglify:css','uglify:js','uglify:img','uglify:html']);

相关文章

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图