前端自动化 shell 脚本命令 与 shell-node 脚本命令 简单使用 之 es6 转译

Posted 苍青浪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端自动化 shell 脚本命令 与 shell-node 脚本命令 简单使用 之 es6 转译相关的知识,希望对你有一定的参考价值。

(背景: 先用 babel 转译 es6 再 用 browserify 打包 模块化文件,来解决浏览器不支持模块化 )
(Browserify是一个让node模块可以用在浏览器中的神奇工具)

今天折腾了一上午,对于前端好多自动化管理的命令用起来,步骤甚多,故想写一个脚本文件,将项目所需要执行到命令 都 写在一个脚本文件中,在命令行 只需写一个命令即 完成所有事情。
配置的环境: node + git
1.第一步:在项目根目录下 新建 package.json 配置文件

{
  "name": "shell-node",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1",
    "es": "babel src/js -d build",
    "browserify": "browserify build/index.js > bundle.js",
    "build": "npm run es && npm run browserify"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "babel-cli": "^6.0.0",
    "babel-core": "^6.23.1",
    "babel-polyfill": "^6.23.0",
    "babel-preset-es2015": "^6.22.0"
  }
}

 

("这些脚本可以是行内bash命令,或者也可以指向可执行的命令行文件。你还可以在脚本内引用其他npm脚本");
一:shell 脚本 :
文件名:test.sh 位置:项目根目录

#!/bin/bash
#the first program
echo -e "e[1;34m hello shell e[0m"
npm run es && npm run browserify

 

shell 脚本运行 : bash test.sh

二:shell-node 脚本
注:用 js 语法写的 命令行 脚本
文件名:hello.sh 位置:项目根目录

#!/usr/bin/env node
console.log(‘hello world!‘);
.....

 

在项目根目录 打开 git bash ,可在 package.json 中 添加 这样一段 bin 代码:

"bin":{
    "hello": "./hello.sh"
  },
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1",
    "es": "babel src/js -d build",
    "browserify": "browserify build/index.js > bundle.js",
    "build": "npm run es && npm run browserify"
  },

 

命令行 输入 , npm link 可以全局使用, 使用 时 ,在 命令行 直接 输入 hello 即可 执行 此 脚本文件。
<h5>移除此 全局命令 :</h5>在此脚本文件的根目录 打开 git bash 命令行 输入: npm remove -g

三:‘onchange 插件 监视 文件变化 自动执行 脚本的合并任务‘
package.json 配置 如下:

 "scripts": {
    "test": "echo "Error: no test specified" && exit 1",
    "es": "babel src/js -d build",
    "browserify": "browserify build/index.js > bundle.js",
    "build": "npm run es && npm run browserify",
    "watch": "onchange src/js/*.js -- npm run build"
  },
  "devDependencies": {
    "onchange": "^3.2.1"
}

 

相关文章部分内容:
变更监控

至此,我们的任务不断的需要对文件做一些变更,我们不断的需要切回命令行去运行相应的任务。针对这个问题,我们可以添加一个任务来监听文件变更,让文件在变更的时候自动执行这些任务。这里我推荐使用onchange插件,安装方法如下:

npm i -D onchange

让我们来给CSS和javascript设置监控任务:

"scripts": {
  ...
  "watch:css": "onchange ‘src/scss/*.scss‘ -- npm run build:css",
  "watch:js": "onchange ‘src/js/*.js‘ -- npm run build:js",
}

 

这些任务可以分解如下:onchange需要你传参想要监控的文件路径(字符串),这里我们传的是SCSS和JS源文件,我们想要运行的命令跟在--之后,这个命令当路径内的文件发生增删改的时候就会被立即执行。
让我们再添加一个监控命令来完成我们的npm scripts构建过程。

再添加一个包,parallelshell:

npm i -D parallelshell

再次给scriopts对象添加一个新任务:

"scripts": {
  ...
  "watch:all": "parallelshell ‘npm run serve‘ ‘npm run watch:css‘ ‘npm run watch:js‘"
}

 

parallelshell支持多个参数字符串,它会给npm run传多个任务用于执行。

写在最后 :
开发环境里 将 jQuery 通过 npm 包管理工具下载,需要用到的文件顶部将其 引入 es6 引入 使用 :

import "babel-polyfill";
import $ from "jquery";
import {firstName, lastName, year} from ‘./profile‘;

$(‘h1‘).css({"color":"red"});
.....

 

package.json 最终 事例:

{
  "name": "shell-node",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "author": "",
  "license": "ISC",
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1",
    "es": "babel src/js -d build",
    "browserify": "browserify build/index.js > bundle.js",
    "build": "npm run es && npm run browserify",
    "watch": "onchange src/js/*.js -- npm run build"
  },
  "devDependencies": {
    "babel-cli": "^6.0.0",
    "babel-core": "^6.23.1",
    "babel-polyfill": "^6.23.0",
    "babel-preset-es2015": "^6.22.0",
    "browserify": "^14.1.0",
    "jquery": "^3.1.1",
    "onchange": "^3.2.1"
  }
}

 

.babelrc 内容 事例:

{
    "presets": [
        "es2015"
    ],
    "plugins": []
}

 

最后 通过 上文 所阐述的 方法 将其 使用,提高 开发效率 : 用 babel 转译 再 用 browserify 将 js 打包 成 一个 js 文件 ,最终 html 引入 使用 。

以上是关于前端自动化 shell 脚本命令 与 shell-node 脚本命令 简单使用 之 es6 转译的主要内容,如果未能解决你的问题,请参考以下文章

Linux shell脚本如何自动运行程序并输入命令

Shell编程规范与变量命令总结

自动化shell脚本except与python的pexpect模块

Shell脚本编程规范与变量

Shell脚本之初见——理论篇

Shell编程规范与变量