美文网首页
自动化构建

自动化构建

作者: 安掌门dear | 来源:发表于2021-01-15 16:41 被阅读0次

脚手架的作用

通用脚手架Yeoman

  • Yeoman是一款脚手架工具,可以帮助开发人员创建项目的基础结构代码
  • yo是yeoman的命令行管理工具,可以在命令行运行yeoman命令
  • 生成器:争对不同的项目生成不同的脚手架

Yeoman使用说明

  • 全局安装yo
    • npm install --global yo
  • 安装generator
    • npm install --global generator-webapp
  • 通过yo运行generator
    • mkdir project-name
    • cd project-name
    • yo webapp
  • 启动应用
    • npm run start

自动化构建

  • 通过相关的命令构建
  • 安装less插件
    • npm i less -g
  • 通过lessc命令转换
    • lessc input.less output.css

npm script

  • npm允许在package.json文件中,使用script字段定义脚本命令
  • npm-run-all插件 解决并行执行问题
  • 安装插件npm i npm-run-all -D
  • 并行执行run-p 脚本1 脚本2 脚本3
  • 串行执行run-s 脚本1 脚本2 脚本3

构建样式文件

  • 构建样式文件转换和压缩
  • 找到package.json里的script自动化构建
    • "style": "lessc main.less main.css && minify main.css > main.min.css"

构建脚本文件

  • 构建脚本格式和语法
  • Babel插件可以将ES6+新语法转成ES5
    • 安装:npm install -g babel-core babel-cli
    • 安装转码规则:npm install -g babel-preset-env
    • 争对单个文件进行转换:
      • babel [input.js] -o [output.js]
    • 争对整个目录进行转换
      • babel [src] -d [dist]
  • Eslint 可以对js代码格式进行检查
    • 初始化项目 npm init --yes
    • 安装ESLint npm install eslint -g
    • 初始化配置文件 eslint --init
    • 检查js代码风格
      • 单个文件 eslint path/filename.js
      • 整个目录 eslint path/dirname
  • StyleLint 可以对css代码格式进行检查
    • 初始化项目 npm init --yes
    • 安装StyleLint npm install --global stylelint
    • 安装检测标准 npm install --global stylelint-config-standard
    • 创建规范文件.stylelintrc.json

自动化构建工具gulp

  • 全局安装gulp客户端 npm install -g gulp-cli
  • 初始化项目 npm init --yes
  • 安装gulp包 npm install gulp -D
  • 新建gulpfile文件
  • 在gulpfile.js中创建gulp任务
  • 执行gulp任务 gulp <task-name>

gulp组合任务

//任务的并行执行
exports.p = gulp.parallel(task1,task2,task3)
//任务的串行执行
exports.s = gulp.series(task1,task2,task3)

利用gulp完成文件传输过程

  const gulp = require('gulp')
  const style = () => {
    // 流就是异步操作
    return gulp.src('src/style/index.css').pipe(gulp.dest('dist'))
  }
  module.exports = {
    style
  }

利用gulp对样式进行构建

  • npm i gulp-less -D 将less文件,转换成css文件
  • npm i gulp-clean-css -D 压缩css代码
  • npm i gulp-rename -D 对文件进行重命名
    const {src,dest} = require('gulp')
    const less = require('gulp-less')
    const cleancss = require('gulp-clean-css')
    const rename = require('gulp-rename')
    
    const style = () => {
      // 流就是异步操作
      return src('src/style/main.less',{base: 'src'})
        .pipe(less())
        .pipe(cleancss())
        .pipe(rename('main.min.css'))
        .pipe(dest('dist'))
    }
    module.exports = {
      style
    }
    

利用gulp对脚本进行构建

  • gulp-babel 将ES6新语法转成ES5
  • gulp-uglify 压缩js代码
  • gulp-rename 对文件进行重命名

利用gulp对图片进行构建

  • gulp-imagemin
  • 安装方式
    • npm i gulp-imagemin -D

利用gulp对html文件进行构建

  • gulp-htmlmin 压缩html

gulp清除文件

  • del

发布服务

  • 利用browsersync发布
  • npm i brower-sync -D

gulp使用bootstrap

  • 安装bootstrap依赖
    • npm i bootstrap@3.4.1 jquery -S

gulpfile.js

// 通过 解构 的方式引入函数
const { src, dest, parallel, series, watch } = require('gulp')
const less = require('gulp-less')
const cleancss = require('gulp-clean-css')
const rename = require('gulp-rename')
const autoprefixer = require('gulp-autoprefixer')
const babel = require('gulp-babel')
const uglify = require('gulp-uglify')
const htmlmin = require('gulp-htmlmin')
const imagemin = require('gulp-imagemin')
const del = require('del')
const browserSync = require('browser-sync')
const bs = browserSync.create()

// 声明 gulp 任务
const style = () => {
  // 流 就是异步操作
  return src('src/styles/*.less', { base: 'src' })
    .pipe(less())
    .pipe(autoprefixer())
    .pipe(cleancss())
    .pipe(rename({ "extname": ".min.css" }))
    .pipe(dest('dist'))
}

// 声明 脚本 构建任务
const script = () => {
  return src('src/js/*.js')
    .pipe(babel({
      presets: ['babel-preset-env']
    }))
    .pipe(uglify())
    .pipe(rename({ "extname": ".min.js" }))
    .pipe(dest('dist/scripts'))
}

// 声明 页面 的构建任务
const html = () => {
  return src('src/index.html')
    .pipe(htmlmin({
      collapseWhitespace: true,
      minifyCSS: true,
      minifyJS: true
    }))
    .pipe(dest('dist'))
}

// 声明 图片 构建任务
const image = () => {
  return src('src/images/**', { base: 'src' })
    .pipe(imagemin())
    .pipe(dest('dist'))
}

// 声明 文件清除 任务
const clean = () => {
  return del(['dist'])
}

// 声明 服务发布 任务
const serve = () => {
  // watch(被监视的文件,对应的任务)
  watch('src/index.html', html)
  watch('src/styles/*.less', style)
  watch('src/js/*.js', script)
  watch('src/images/**', image)

  // 初始化服务
  bs.init({
    notify: false,      // 禁用 浏览器 右上角的 browserSync connected 提示框
    files: 'dist/**',   // 监视 dist 下 文件的变化,然后在浏览器上实时更新
    server: {
      baseDir: './dist', // 指定服务启动的目录
      routes: {
        '/node_modules': 'node_modules'
      }
    }
  })
}

// 组合任务
const build = parallel(style, script, html, image)
const dev = series(clean, build, serve)

// 导出任务
module.exports = {
  build,
  dev,
  serve
}

相关文章

  • 从0构建自动化测试平台(五)兼容性测试实现

    往期文章 从0构建自动化测试平台(一)之技术选型 从0构建自动化测试平台(二)WEB服务器构建 从0构建自动化测试...

  • gulp

    1 gulp(自动化构建工具) 自动化构建 自动化构建:优化网站,提升网站性能,提高网站的代码,文件的优化处理 处...

  • 持续交付-发布可靠软件的系统方法阅读记录

    1、尽可能的自动化 自动化构建 自动化配置 自动化部署(热部署) 自动化测试 通过许多次的构建、配置、测试,从而对...

  • gulp

    叫做前端自动化构建工具,此类工具还有:grunt前端自动化构建工具 是什么?答: 自动化 less sass ...

  • Gradle自动化构建之自定义任务

    Gradle自动化构建之自定义任务 GitHub地址 Gradle自动化构建ProtocolBuffer 最近在看...

  • jenkins自动化构建配置

    背景 jenkins自动化构建gitlab项目 gradle或maven多模块项目在自动化构建时希望每个模块独立部...

  • 从零开始认识自动化构建

    我们日常开发自动化构建伴随着我们从开发到上线,那么自动化构建到底是个什么东西?自动化构建使开发者尽可能脱离运行环境...

  • Gradle完全解析

    导语: Gradle是一个基于groovy语言的自动化构建工具,提供了一个自动化构建任务的框架,具体构建过程支持自...

  • 前端内容的自动化构建

    前端内容的自动化构建 Gulp - 基于流的自动化构建工具 Browserify 官网 Github 一个管理前端...

  • es6运行在浏览器的前端项目工作流, 基于gulp,expres

    项目自动化构建思路 自动化构建逻辑 若app文件夹(前端静. 态页面)资源发生改变 -> 调用browser.js...

网友评论

      本文标题:自动化构建

      本文链接:https://www.haomeiwen.com/subject/jgewaktx.html