Grunt && Gulp前端自动化构建工具

一、自动化构建的认识

1. 概念相关

学自动化构建的目的?
比如说在一个项目中我们想使用 ecmascript 的最新特性,以及想使用 sass来编写css,但这些内容都不是浏览器所能够识别的,此时我们就需要借助一些工具如 如可以借助 sass 编译工具将sass语法编译为css语法使浏览器识别。

自动话构建的概念感觉不好定义
个人理解
从源码到生产代码中间通过编译转换的步骤就是构建步骤,在利用一些工具将构建的过程不需要人为的进行构建,通过监听源代码的变化之后会自动构建编译,这应该就是自动化构建
在这里插入图片描述

2. 自动化初体验

需求: 在项目中使用sass来编写样式。
在这里插入图片描述

  1. 构建环节

借助 sass 官方提供的工具来将 scss文件转换为 css文件.

yarn add sass

在package.json中配置 npm scripts 执行脚本

ps:scripts 中的脚本可以省略 ./node_modules/.bin/, 当借助 yarn 或是 npm run 脚本命令的时候,他会自动的去 ./node_modules/.bin/ 找我们配置的命令。
在这里插入图片描述
yarn build 得到了构建之后的代码
在这里插入图片描述
2. 借助 broswer-sync 启动一个服务器运行我们的项目

yarn add browser-sync -D

在 scripts 中配置命令
在这里插入图片描述
运行 yarn serve 启动服务

在这里插入图片描述

在这里插入图片描述
如果此时我们更改了style.scss 中的文件,就需要重新构建css之后再启动服务,这样我们需要输入两遍命令,此时我们可以借助 npm scripts 中的钩子命令,
在这里插入图片描述
运行 yarn serve
在这里插入图片描述
3. 自动化
此时我们像监听scss文件变化之后,自动执行build命令。
在这里插入图片描述

此时发现加上–watch之后,后面的serve命令就被堵塞不执行了,这时就需要同时执行多个script任务,可以借助与 npm-run-all 来实现。

yarn add npm-run-all -D

安装这个模块之后,我们就可以执行多个任务了,同时也可以监听style.scss文件的变化。
当style.scss变化之后,会自动执行build命令。
在这里插入图片描述

虽然说 build的命令会随着 style.scss变化而执行, 但是修改style.scss之后我们希望的是自动的更新页面。
在这里插入图片描述
此时就能够达到我们的效果了。

二、Grunt

对于 Grunt 仅了解既可以,因为其已经推出历史的舞台了,能够看懂别的项目中的代码就行了。

1. Grunt 的基本使用

  1. 安装grunt
yarn add grunt -D
  1. 创建 grunt 的入口文件 gruntfile.js
// Grunt 的入口文件
// 这个文件主要是用来定义 Grunt 自动执行的任务
// 需要导出一个函数
// 此函数接受一个 grunt 的参数, 该参数提供创建任务所用到的 API

module.exports = grunt => {
  // 1. grunt.registerTask(任务名, 任务函数| 任务数组(已经注册过任务名) 如:[ task1, task 2]) 来注册一个任务,通过 yarn grunt 任务名称,如要执行task1 =》 yarn grunt task1。
  grunt.registerTask('task1', () => {
    console.log('task1任务执行了')
  })
  
  grunt.registerTask('task2', () => {
    console.log('task2任务执行了')
  })
  
  // 2. 如果注册的任务名称为 default 就可以直接通过命令 yarn grunt 来执行 default 任务
  // 任务函数可以为数
  grunt.registerTask('default', ['task1', 'task2'])
  grunt.registerTask('task3', ['task1', 'task2'])

  // 3. grunt 还可以创建异步任务, 不过创建异步任务需要通过 任务函数体的this.async()得到一个回调函数,再异步操作之后调用这个回调函数来告诉grunt 任务结束
  grunt.registerTask('async-task', function() {
    const doneFn = this.async()
    setTimeout(() => {
      console.log('异步任务执行了')
      doneFn()
    }, 1000);
  })
}
  1. 通过 yarn grunt + 任务名来运行grunt 任务

2. Grunt 标记任务失败

1. 如何标记

module.exports = grunt => {
  // 1. 标记grunt 任务失败,同步任务只需要再 任务函数体返回一个false
  grunt.registerTask('task1', () => {
    console.log('task1任务执行了')
    // 任务函数体返回一个false
    return false
  })
  
  grunt.registerTask('task2', () => {
    console.log('task2任务执行了')
  })
  
  grunt.registerTask('default', ['task1', 'task2'])
  grunt.registerTask('task3', ['task1', 'task2'])

  // 2. 异步任务标记失败,需要给 异步任务结束回调传递一个false
  grunt.registerTask('async-task', function() {
    const doneFn = this.async()
    setTimeout(() => {
      console.log('异步任务执行了')
      // 传递false
      doneFn(false)
    }, 1000);
  })
}

2. 失败之后带来的影响

比如现在有一个 grunt default 任务,该任务执行task1,task2,task3, 现在再task2任务中标记任务失败,当执行这个default任务的时候,task1会执行,到task2就执行失败,同时task2后面的任务终止执行。
以上面的例子来运行代码得到如下结果:
在这里插入图片描述

3. Grunt 的配置方法

代码如下(示例):

4. Grunt 多目标任务


module.exports = grunt => {
 
  grunt.initConfig({
    // 2. 将多目标任务的名再 initConfig 里进行初始化

    build: {
      // 3. build 对象中的每一个键值对就是一个任务,除了options是配置项
      options: {
        config1: 'hhhh'
      },
      css: 'css~~~',
      js: 'js~~~'
    }

  })
  // 1. 再 grunt 通过grunt.registerMultiTask 与 grunt.initConfig 我们可以
  //  配置多目标任务
  grunt.registerMultiTask('build', function() {
    // 4. 通过 this.target 可以拿到任务吗,this.data 可以拿到任务目标值
    console.log('创建多目标任务','name: => ', this.target, 'value: => ', this.data)

    // 5. 通过this.options() 可以拿到配置项中的数据
    console.log(this.options()) 

    // 6. 通过 yarn grunt build 运行多任务,如果仅想指定某个任务可以 build: 子任务名
  })

  grunt.registerTask('async-task', function () {
    const doneFn = this.async()
    setTimeout(() => {
      console.log('异步任务执行了')
      // 传递false
      doneFn(false)
    }, 1000);
  })
}

5. Grunt 插件的使用

仅介绍 Sass,babel,watch 插件的使用

const { loadNpmTasks } = require("grunt")
const loadGruntTasks = require('load-grunt-tasks')
const sass = require('sass')

module.exports = grunt => {

  grunt.initConfig({
    // sass
    // yarn add grunt-sass sass -D
    sass: {
      main: {
        options: {
          sourceMap: true,
          implementation: sass
        },
        files: {
          // key 为 输出路径, value 为 输入路径
          'dist/css/main.css': 'src/scss/main.scss'
        }
      }
    },

    // babel
    // yarn add grunt-babel @babel/core @babel/preset-env -D
    babel: {
      options: {
        presets: ['@babel/preset-env']
      },
      main: {
        files: {
          // key 为 输出, value 为 输入
          'dist/js/app.js': 'src/js/app.js'
        }
      }
    },

    // watch
    // yarn grunt-contrib-watch
    // 当监听的文件发生变化之后,会自动执行对于的 task
    watch: {
      js: {
        files: ['src/js/*.js'],
        tasks: ['babel']
      },
      css: {
        files: ['src/scss/*.scss'],
        tasks: ['sass']
      },
    }
  })

  grunt.registerTask('default', ['sass', 'babel', 'watch'])

  // grunt.loadNpmTasks('grunt-sass')

  // 1. 使用loadNpmTasks 导入 插件不方便,可以使用 loadGruntTasks 插件帮忙自动导入安装的插件
  loadGruntTasks(grunt) // 将 grunt 传入之后会自动所有的插件

}



grunt 使用插件的操作总结

  1. 安装对于的插件
  2. 通过 grunt-loadNpmTasks(‘grunt-sass’) 载入sass
  3. 再 initConfig 中配置 sass 任务。(具体配置可以参考官网)

三、Gulp

Gulp 内容太多了单独写了一篇,可以查看这个文章

Gulp

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: JavaScript 前端自动化是指使用 JavaScript 脚本来自动完成前端工作流程中的一些任务,以提高开发效率和代码质量。 常见的前端自动化任务包括: - 代码构建:使用工具来合并、压缩和优化代码,减少文件体积并提高性能。 - 代码检查:使用工具来检查代码是否符合规范、是否有语法错误等。 - 代码测试:使用工具来对代码进行自动化测试,以确保代码的正确性。 JavaScript 前端自动化常用的工具包括: - Grunt:用于构建、测试和部署项目的自动化工具。 - Gulp:基于流的构建工具,可以快速处理大量的文件。 - Webpack:用于模块化管理 JavaScript 代码的构建工具。 ### 回答2: JavaScript前端自动化是指利用各种工具和技术来提高前端开发效率和质量的过程。它包括自动化构建自动化测试、自动化部署等方面。 首先,自动化构建前端自动化中的重要环节。通过使用构建工具WebpackGulp等,我们可以将源代码进行打包、压缩、合并,以及处理各种资源文件如样式文件、图片等,从而减少手动操作,提高项目开发效率。 其次,自动化测试也是前端自动化中的重要组成部分。我们可以通过使用Mocha、Jest等测试框架,编写针对前端页面的单元测试和集成测试,以确保代码的正确性和稳定性。同时,还可以使用工具进行代码质量检查和代码覆盖率分析,帮助开发人员发现和修复潜在的问题。 最后,自动化部署是前端自动化中不可或缺的一环。通过使用CI/CD工具如Jenkins、Travis CI等,我们可以实现代码的自动构建、测试、部署到服务器的过程,减少人工操作,提高部署效率和一致性。 总之,JavaScript前端自动化是基于各种工具和技术来提高前端开发效率和质量的过程。它包括自动化构建自动化测试和自动化部署等方面,通过减少手动操作和提高自动化程度,帮助开发人员更加高效地进行前端开发工作。 ### 回答3: JavaScript 前端自动化是指利用各种工具和技术来简化和优化前端开发流程的过程。这种自动化可以帮助开发者提高工作效率,减少重复性的劳动,同时还能够确保代码质量和可维护性。 首先,JavaScript前端自动化可以通过构建工具来实现。流行的构建工具WebpackGulp可以帮助开发者自动化处理各种任务,如代码打包、资源压缩、文件合并等等。通过设置合理的配置,开发者可以在代码开发的同时自动进行这些繁琐的任务,从而减轻开发负担。 其次,自动化测试也是JavaScript前端自动化的重要组成部分。开发者可以使用各种测试工具和框架,如Jasmine和Mocha,来编写自动化测试用例。这些测试可以检查代码的正确性、功能的完整性和性能的表现,并能自动运行以减少手动测试的工作量,同时还能够及早发现和修复潜在的问题。 第三,持续集成和部署也是前端自动化的一部分。开发者可以借助Git和GitHub等工具来实现代码的版本控制和协作开发,并结合持续集成工具如Travis CI和Jenkins以自动化构建、测试和部署代码。这可以确保团队的代码始终保持在一个稳定的状态,并能够及时部署到生产环境中。 最后,自动化文档生成也是前端自动化的一项重要任务。通过使用工具如JSDoc、Swagger等,开发者可以从代码中自动生成详细的文档,包括函数和模块的说明、参数和返回值的描述等等。这可以帮助团队成员更好地理解代码和API的使用,提高项目的可维护性和易读性。 综上所述,JavaScript前端自动化通过运用各种工具和技术,从构建、测试、部署到文档生成等方面实现了流程的自动化和优化,为开发者提供了更高效、更稳定的开发环境,并能够提高代码的质量和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值