笔记来源:拉勾教育 - 大前端就业集训营
文章内容:学习过程中的笔记、感悟、和经验
自动化构建
自动化构建
构建:源代码转换为生产代码的过程
构建内容:
- 一些需要编译的代码(css、js),保证浏览器兼容性
- less或者sass转为css
- ES6语法转ES5语法
- 代码压缩
- 统一代码风格,格式化代码
体验构建 - less转css
安装less插件 npm i less -g
命令转换 lessc xxx.less xxx.css
使用时要注意路径的问题
自动化构建
把所有从源代码到生产代码的过程通过逻辑组合在一起 ,通过命令一次性执行多个功能
npm scripts
最简单的自动化构建方式
npm允许在package.json中,使用scripts字段定义脚本命令,脚本内部可以书写node操作字段,只需要执行npm run 脚本名即可运行脚本对应的相应字段
//在package.json中书协scripts,内部书写脚本名和字段
{
"scripts" : {
"a":"node a.js",
// 甚至我们可以把一些npm命令放到这里
"style":"`lessc xxx.less xxx.css`"
}
}
// 和package.json同目录下的a.js文件
console.log('我是脚本')
在命令行输入npm run a即可执行和node a.js相同的操作
我们可以把多条命令写在一个字段中执行
npm scripts运行方式
- 并行执行(parallel):
任务1&任务2,任务之间没有先后顺序,同时执行提高效率 - 串行任务(series):
任务1&&任务2,任务之间先后执行
并行执行和串行执行可以组合操作,例如:任务1&&任务2&任务3&&任务4,这种情况下任务二和任务三可以并行执行,和任务1和任务4串行执行
并行执行在window下不起作用的解决方案
安装npm-run-all插件
// 安装插件
npm i npm-run-all -D
// 并行执行
npm-run-all -p 脚本1 脚本2 脚本3
// 并行执行简写
run-p 脚本1 脚本2 脚本3
// 串行执行
npm-run-all -s 脚本1 脚本2 脚本3
// 串行执行简写
run-s 脚本1 脚本2 脚本3
// 注意脚本1、2、3都是在jscipts中的脚本,
// package.json
"scripts": {
// 创建三个命令
"a": "node a.js",
"b": "node b.js",
"c": "node c.js",
// 使用并行执行三个命令
"p": "run-p a b c",
// 使用串行执行三个命令
"s": "run-s a b c"
}
案例:构建样式文件
要求:把less文件转换成压缩后的css文件
方法:先转css再执行css压缩
- 创建文件夹(mkdir xxxxx)
- 转到文件夹(cd xxxxx)
- 初始化一个项目(npm init -yes可以直接初始化一个空项目)
- 书写文件less用于转换
- 添加scripts命令(less命令 + minify命令)
- 执行scripts命令(nom run 命令)
"scripts": {
// 不用管这一行,这是默认自带的命令
"test": "echo \"Error: no test specified\" && exit 1",
// 使用串行命令把两条命令串在一起:less转css - css压缩文件转mini.css
"style": "lessc ./style/style.less ./style/style.css && minify ./style/style.css > ./style/style.mini.css"
},
使用serve插件开启http服务
使用serve插件开启HTTP服务,即可开启http服务,上面就可以直接访问地址实时查看
npm i serve -g
serve . - (.为当前目录)
构建脚本文件
ES6+语法转换ES5语法插件 -- babel
npm i babel -g
babel提供的版本语法转换功能
babel-preset-es2018: ES2018 >> ES2017babel-preset-es2017: ES2017 >> ES2016babel-preset-es2016: ES2016 >> ES6babel-preset-es2015: ES2015 >> ES5
babel将ES6+语法全部转换为ES5语法
babel-preset-env
babel手动转换
- 单个文件:
babel xxx.js --out-file xxx.js简写babel xxx.js -o xxx.js
- 整个目录:
babel 目录 --out-dir 目录简写babel 目录 -d 目录
使用步骤:
- 初始化项目(
npm init -yes) - 安装babel(
sudo npm i babel-core babel-cli -g) - 同时安装两个包,core为核心,cli为命令行 - 安装转码规则(
sudo npm i babel-preset-env) - 配置转换规则(.babelrc)- 项目根目录中创建文件
- 添加转换命令(babel 目录 -d 目录)
- 执行转换命令(npm run xxx)
{
"presets":[
"env"
]
}
"scripts": {
// 这是上一个案例的,懒得删了,不用管
"style": "lessc ./style/style.less ./style/style.css && minify ./style/style.css > ./style/style.mini.css",
// 这是babel转换(babel ./js -d ./script)整个目录转ES5,&&后面是压缩命令
"js": "babel ./js -d ./script && minify ./script/index.js > ./script/index.mini.js"
}
代码格式校验
对代码格式进行约定并进行校验
- 提供编码规范
- 根据规范,自动检查代码
ESLint - 针对js代码
步骤
- 初始化项目(
npm init --yes) - 安装ESLint(
npm i eslint -g)全局安装 - 初始化配置文件(
selint --init),会问一些问题,选择即可
检查js代码格式
- 单个文件:
eslint 文件路径 - 整个目录:
aslant 目录
// 这是整个ESlint配置文件 - selint --init生成的
// 其中rules可以自定义一些配置项,可在官网查看
{
"env": {
"browser": true,
"commonjs": true,
"es2021": true
},
"extends": "eslint:recommended",
"parserOptions": {
"ecmaVersion": 12
},
"rules": {
}
}
StyleLint - 针对CSS
步骤
- 初始化项目(
npm init --yes) - 安装StyleLint(
npm i stylelint -g)全局安装 - 安装检测标准(
npm i stylelint-config-standard),有很多套标准,standard是标准的css标准 - 创建配置文件(
.stylelint.json)跟目录创建
检测css代码格式
- 单个文件:
stylelint 文件路径 - 整个目录:
stylelint 目录/*.css,星号通配 - 整个项目:
stylelint **/*.css,星号通配
// .stylelint.json文件
{
//使用标准
"extends": "stylelint-config-standard",
// 自定义标准,可在官网查看
"rules": {
}
}