脚手架的作用
通用脚手架Yeoman
- Yeoman是一款脚手架工具,可以帮助开发人员创建项目的基础结构代码
- yo是yeoman的命令行管理工具,可以在命令行运行yeoman命令
- 生成器:争对不同的项目生成不同的脚手架
Yeoman使用说明
- 全局安装yo
- 安装generator
- npm install --global generator-webapp
- 通过yo运行generator
- mkdir project-name
- cd project-name
- yo webapp
- 启动应用
自动化构建
- 通过相关的命令构建
- 安装less插件
- 通过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]
- 争对整个目录进行转换
- 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对html文件进行构建
gulp清除文件
发布服务
- 利用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
}
网友评论