最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 自动化构建

    正文概述 掘金(小流江河)   2021-03-30   505

    自动化构建

    什么是构建

    所谓构建,是指将源代码转换成生产代码的过程。

    自动化构建

    为什么需要将源代码转换成生产代码?或者说需要构建哪些内容?

    • 代码需要编译( CSS3,JS6+ ), 保证浏览器的兼容性
    • 代码需要压缩( CSS,JS,HTML,图片等 )。节省带宽,提高加载速度
    • 代码需要做格式化校验,统一代码风格。

    以上这些问题,都是构建的内容。

    什么是自动化构建

    不管是代码压缩还是 less 转换,通过手动方式进行工作量巨大(例如手动压缩2000行代码,估计程序员就疯了)。
    自动化构建是指将手动构建任务,进行排列组合,然后通过命令(或工具)自动执行的过程。
    实现自动化构建最简单的方式是 npm scripts (npm 脚本)。

    npm scripts

    npm 允许在 package.json 文件里面,使用 scripts 字段定义脚本命令。

    {
      "scripts": {
        // 命令名称: 任务
        "foo": "node bar.js"
      }
    }
    

    scripts 字段是一个对象。它的每一个属性,对应一段脚本。比如,foo 命令对应的脚本是node bar.js

    # 命令行下使用 npm run <命令>,就可以执行这段脚本。
    npm run foo
    # 等同于执行
    node bar.js
    

    自动化构建

    npm scripts任务的执行方式

    如果 npm 脚本里面需要执行多个任务,那么需要明确它们的执行顺序。 如何选择正确的任务执行顺序?

    • 串行执行:任务之间有明确的先后顺序,必须先执行前一个任务,然后才能执行下一个任务
      • 相当于 4X100 接力,拿到上一个队员的接力棒后,下一个队员才能继续跑
    • 并行执行:任务之间没有明确的先后顺序,同时执行,可以提高效率
      • 相当于 100 米短跑,8个人同时起跑

    自动化构建 如果是并行执行(即同时的平行执行),可以使用 & 符号。

    {
      "scripts": {
        "parallel": "node task1.js & node task2.js & node task3.js"
      }
    }
    

    如果是串行执行(前一个任务成功后,才执行下一个任务),可以使用 && 符号。

    {
      "scripts": {
        "series": "node task1.js && node task2.js && node task3.js"
      }
    }
    

    但是,& 符号在 Windows 操作系统下不起作用。 此时,我们可以借助插件,在 Windows 下实现并 npm-run-all

     # 先在项目中安装
    npm i npm-run-all -D
       
    # 并行执行:其中 p 是 parallel(并行)的意思
    npm-run-all -p 脚本1 脚本2 脚本3
    # 或简写为 
    run-p 脚本1 脚本2 脚本3
       
    # 串行执行:其中 s 是 series(串行)的意思
    npm-run-all -s 脚本1 脚本2 脚本3
    # 或简写为
    run-s 脚本1 脚本2 脚本3
    

    构建样式文件

    构建样式文件就是将开发环境下的 CSS (包括 Less 或 Sass)源代码,转成线上环境使用的代码。这里的构建任务可能有多个。
    以构建Less编译和压缩的样式文件为例:

    1. 编译 less 文件
    # 安装 less 包,编译 less 文件
    npm i less -g
    
    # 在 package.json 中,添加 less 解析命令
    "scripts": {
        "style": "lessc style.less style.css",
    }
    
    # 执行命令(自动编译)
    npm run style
    
    1. 压缩 css 文件
    # 安装 minify 包, 压缩文件
    npm i minify -g
    
    # 在 package.json 中,添加 minify 压缩命令
    "scripts": {
        #                              先编译 && 然后压缩
        "style": "lessc style.less style.css && minify style.css > style.min.css",
    }
    
    # 执行命令(自动编译)
    npm run style
    

    构建脚本文件

    为解决ES6+的浏览器兼容问题,我们需要构建脚本文件来处理。

    在开发过程中,经常使用 ES6+ 新特性时,一些旧的浏览器,不支持 JS 的新语法。所以,在项目上线之前,就需要将新的语法特性解析成兼容性更好的 ES5 。最常用的编译工具是 Babel,Babel插件可以将ES6+新语法转成ES5。 Babel官网:babeljs.io/

    构建步骤:

    1. 初始化项目(npminit-yes)
    2. 安装Babel(npminstall-gbabel-corebabe卜cli)
    3. 安装转换规则(npminstall-gbabel-preset-env)
    4. 配置转换规则()
    5. 在npm scripts中添加转换命令(babelsrc-ddist)
    6. 执行转换命令
    # 安装 babel核心,Babel客户端
    npm i -g babel-core babel-cli
    
    ![image.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4619ed4d23244cff818573e629536278~tplv-k3u1fbpfcp-watermark.image)
    # 安装转码规则
    npm i -g babel-preset-env
    
    # 在项目根目录下,新建 .babelrc 文件(注意文件名前有一个点),并添加转换规则
    {
        "presets": [
          "env"
        ],
    }
    
    # 通过 babel 编译单个 j s文件
    babel input.js --out-file output.js
    # 或者
    babel input.js -o output.js
        
    # 通过 babel 编译整个目录
    babel js --out-dir scripts
    # 或者
    babel js -d scripts
    
    # 在 package.json 中,添加 babel 解析命令
    "scripts": {
        "script": "babel js -d scripts",
    }
    
    # 执行命令(自动编译)
    npm run script
    

    添加压缩命令

    # 在 package.json 中,添加 babel 解析和压缩命令
    "scripts": {
        "script": "babel js -d scripts && minify scripts/main.js > scripts/script.min.js",
    }
    

    自动化构建对于现代的前端开发非常关键,这也催生了很多优秀的自动化构建工具。这里推荐Gulp。

    代码格式校验

    每个程序员都有自己的编码习惯,最常见的莫过于:

    • 有的人代码结尾必须加分号 ;,有的人觉得不加分号 ; 更好看;
    • 有的人写字符串时,喜欢用双引号,而有的人喜欢用单引号;
    • 有的人代码缩进喜欢用 4 个空格,有的人喜欢用 2 个空格;

    诸如此类,但是项目开发一般是多人协作,所以,不同的工程师,写的代码风格不同。一般你写自己的代码怎么折腾都没关系,但整个项目需要有一个统一的编码规范。这样别人看源码就能够看得懂。

    那么问题来了,总不能一行行去检查代码吧,这是一件很蠢的事情。凡是重复性的工作,都应该通过工具来完成。

    这个工具应该做两件事情:

    1. 提供编码规范
    2. 根据编码规范,自动检查代码。

    在前端工程化中,不同的代码,使用不同的工具进行检测。

    例如:通常我们使用 ESLint 来检测 JavaScript 代码;我们使用 StyleLint 来检测 CSS 代码。

    ESLint使用

    ESLint 是 JSLint 的升级版本,是用来检查 JS 代码质量的插件。通过 ESLint 可以统一不同开发者的代码风格。

    官网:eslint.org/

    ESLint使用步骤:

    1. 初始化项目(npm init --yes)
    2. 安装ESLint(npm i eslint -g)
    3. 初始化配置文件(eslint --init)
    4. 检查JS代码格式
      • 单个文件(eslint path/filenamejs)
      • 整个目录(eslint path/dirname)

    先创建项目

    mkdir lint-demo
    cd lint-demo
    
    # 初始化项目,生成 package.json
    npm init --yes
    

    安装 ESLint:

    $ npm i eslint -g
    

    初始化一个配置文件:

    # 之后进入交互窗口,询问一些问题;根据问题生成配置文件 例如:.eslintrc.json
    $ eslint --init
    

    配置规则

    rules: { "规则名": [规则值, 规则配置] }

    # 配置检测规则
    {
        "env": {
            "browser": true,
            "commonjs": true,
            "es2021": true
        },
        "extends": "eslint:recommended",
        "parserOptions": {
            "ecmaVersion": 12
        },
        "rules": {
            "indent": [ "error", 2 ],       # 使用两个空格缩进
            "quotes": [ "error", "double" ] # 使用双引号包裹字符串
        }
    }
    

    之后,你可以在任何文件或目录上运行ESLint如下:

    $ eslint yourfile.js
    

    StyleLint使用

    StyleLint 是检测 CSS 代码格式的插件。

    官网:stylelint.io/

    使用步骤:

    1. 初始化项目(npm init --yes
    2. 安装StyleLint(npm install --global stylelint
    3. 安装检测标准(npm install --global stylelint-config-standard
    4. 创建配置文件(.stylelintrc.json
    5. 检查css代码格式
      • 单个文件(stylelint path/filename.css
      • 整个项目(stylelint **/*.css

    StyleLint 初体验

    安装插件

    # stylelint 是运行工具,stylelint-config-standard 是 stylelint 的推荐配置
    npm i --g stylelint stylelint-config-standard
    

    在项目的根目录下,创建 .stylelintrc.json 文件,添加如下配置

    {
      "extends": "stylelint-config-standard",
      "rules": {
        # 除了使用 stylelint-config-standard,我们还可以在 rules 字段中自定义校验规则
        "block-no-empty": true # 代码块不能为空
      }
    }
    

    运行 stylelint,检测 CSS 代码格式

    # 注意:路径是写在双引号中的
    # 检测一个文件
    stylelint 文件路径/文件名.css
    
    # 检测整个项目下,所有的 CSS 文件
    stylelint **/*.css
    

    起源地下载网 » 自动化构建

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元