gulp不生成打包文件_JavaScript之gulp打包

gulp是基于流/node的自动化构建工具,主要使用管道传输机制,三个重要的命令:gulp.src 指定需要打包的文件的入口

gulp.pipe 指定插件处理文件

gulp.dist 指定打包之后文件的输出路径

npm 6.14.7

node v12.18.2

本项目打包使用的插件del 清空build目录

gulp-babel ES6转换为ES5

gulp-concat 合并文件

gulp-uglify 压缩js文件

gulp-rename 文件重命名

gulp-htmlmin 压缩js文件

gulp-less less文件转换为css文件

gulp-clean-css 压缩css文件

gulp-imagemin 压缩图片

一、gulp安装与项目初始化1、安装node.js

node -v2、全局安装gulp-li

//安装gulp4.0之前,先卸载原来的gulp

npm rm--global gulp

//安装gulp-cli

npm install -g gulp-cli3、项目初始化

新建一个项目文件夹gulp-demo,在项目文件夹下初始化项目,生成package.json文件

//执行该命令,然后不断回车,最后输入yes,则初始化完成,生成package.json 截图1

npm init

//全部使用默认配置,快速生成package.json 截图2

npm init -y截图1截图2

package.json文件

{

"name": "gulp-demo",

"version": "1.0.0",

"description": "//基于gulp的项目",

"main": "index.js",

"scripts": {

"build": "gulp",

"test": "echo \"Error: no test specified\" && exit 1",

"start": "gulp watch"

},

"repository": {

"type": "git",

"url": "git+https://github.com/lin-vivian/gulp-demo.git"

},

"keywords": [],

"author": "",

"license": "ISC",

"bugs": {

"url": "https://github.com/lin-vivian/gulp-demo/issues"

},

"homepage": "https://github.com/lin-vivian/gulp-demo#readme",

"devDependencies": {

"gulp": "^4.0.2",

"gulp-htmlmin": "^5.0.1"

},

"dependencies": {

"react": "^16.13.1",

"react-dom": "^16.13.1"

}

}4、局部安装gulp,创建并编辑gulpfile.js文件

npm install gulp --save-dev

gulpfile.js

const gulp = require('gulp');

//开启一个任务gulp.task('default', function(){

//检测gulp是否启动 console.log("gulp启动了");

})

//如下图所示,表示成功

二、不同文件的压缩html文件压缩安装html依赖

npm install gulp-htmlmin --save-dev修改gulpfile.js文件

const gulp = require('gulp');

const gulpHtml = require('gulp-htmlmin')

//添加html压缩任务gulp.task('htmlmin', (done) => {

console.log('正在处理html文件');

gulp.src('./public/**/*.html')

.pipe(gulpHtml({

//删除空格 collapseWhitespace: true,

//删除注释 removeComments: true

}))

.pipe(gulp.dest('build/html'))

done()

});

// //开启一个任务gulp.task('default', gulp.series('htmlmin'))压缩文件

gulp

//或者

npm buildjs文件压缩ES6转换为ES5, 安装对应插件gulp-babel,使用babel 8.x 必须安装如下包才能让gulp正常运行

包安装

"@babel/core": "^7.10.5",

"@babel/plugin-proposal-class-properties": "^7.10.4",

"@babel/plugin-transform-runtime": "^7.10.5",

"@babel/preset-env": "^7.10.4",

"@babel/preset-react": "^7.10.4",

"@babel/runtime": "^7.10.5",

"babel-loader": "^8.1.0",

"gulp-babel": "^8.0.0",

npm install --save-dev gulp-babel

npm install --save-dev babel-loader

npm install --save-dev '@babel/core'

npm install --save-dev '@babel/plugin-proposal-class-properties'

npm install --save-dev '@babel/plugin-transform-runtime'

npm install --save-dev '@babel/preset-env'

npm install --save-dev '@babel/preset-react'

npm install --save-dev '@babel/runtime'

.babelrc文件添加,在项目根目录下

{

"presets": [

"@babel/preset-env",

"@babel/preset-react"

],

"plugins": [

"@babel/plugin-transform-runtime",

"@babel/plugin-proposal-class-properties"

]

}

gulpfile.js文件修改,并运行

const gulp = require('gulp');

const babel = require('gulp-babel');

const replace = require('gulp-replace');

const gulpHtml = require('gulp-htmlmin');

//html文件打包

gulp.task('htmlmin', (done) => {

console.log('正在处理html文件');

gulp.src('./public/**/*.html')

.pipe(gulpHtml({

//删除空格

collapseWhitespace: true,

//删除注释

removeComments: true

}))

.pipe(gulp.dest('build/html'))

done()

});

//js文件打包

gulp.task('jsmin', (done) => {

gulp.src('./src/**/*.js')

.pipe(babel()) //ES6转换为ES5

.pipe(gulp.dest('build/js'))

done()

})

// //开启一个任务

gulp.task('default', gulp.series('htmlmin', 'jsmin'))

gulp.task('watch', () => {

gulp.watch('src/**/*.*', gulp.series('default'))

})js文件压缩,添加gulp-uglify插件

添加插件

npm install --save-dev gulp-uglify

修改gulpfile.js文件

//js文件打包

gulp.task('jsmin', (done) => {

gulp.src('./src/**/*.js')

.pipe(babel()) //ES6转换为ES5

.pipe(uglify()) //js代码压缩

.pipe(gulp.dest('build/js'))

done()

})代码合并,添加gulp-concat插件(合并文件一定要在babel之后,不然会导致压缩不成功)

npm install --save-dev gulp-concat

修改gulpfile.js文件

const concat = require('gulp-concat');

//js文件打包

gulp.task('jsmin', (done) => {

gulp.src('./src/**/*.js')

.pipe(babel()) //ES6转换为ES5

.pipe(concat(main.js)) //多个文件合并为一个文件,注:文件合并必须在babel之后

.pipe(uglify()) //js代码压缩

.pipe(gulp.dest('build/js'))

done()

})less文件压缩编译less文件,将其转化为css文件

添加插件

npm install --save-dev gulp-less

修改gulpfile.js文件

const concat = require('gulp-less')

//less文件打包,编译成css

gulp.task('lessmin', (done) => {

gulp.src(['src/**/*.less'])

.pipe(concat('main.less'))

.pipe(less())

.pipe(gulp.dest('build/css'))

done()

})编译前的less文件编译后的css文件css文件压缩

添加插件

npm install --save-dev gulp-clean-css

修改gulpfile.js文件

const css = require('gulp-clean-css')

//less文件打包,编译成css,并压缩css文件

gulp.task('lessmin', (done) => {

gulp.src(['src/**/*.less'])

.pipe(concat('main.less'))

.pipe(less()) //编译less文件为css文件

.pipe(css({ compatibility: 'ie8' })) //压缩css文件

.pipe(rename('main.min.css'))

.pipe(gulp.dest('build/css'))

done()

})压缩前的css文件图片压缩

添加插件

cnpm install --save-dev gulp-imagemin

修改gulpfile.js文件

const image = require('gulp-imagemin')

//压缩图片

gulp.task('imagemin', (done) => {

gulp.src(['src/static/images/*'])

.pipe(image())

.pipe(gulp.dest('build/image'))

done()

})压缩前后文件大小比较

总结使用gulp4打包静态资源的时候,npm和node必须升级到对应版本,否则会出错

使用插件的时候一定要注意与gulp3插件的区别,版本不匹配也会导致压缩出错

js文件压缩的时候,一定要先将ES6的代码先转换为ES5的代码,然后再合并并压缩,否则js文件不会打包成功

图片压缩的时候,使用npm安装gulp-imagemin插件如果出现下面的问题,则再使用cnpm/npm重复安装,多安装几次!!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值