原文:http://www.ydcss.com/archives/54
簡介:
使用gulp-uglify壓縮javascript文件,減小文件大小。
1、安裝nodejs/全局安裝gulp/項目安裝gulp/創建package.json和gulpfile.js文件
1.1、gulp基本使用還未掌握?請參看: gulp詳細入門教程
1.2、本示例目錄結構如下:
2、本地安裝gulp-uglify
2.1、github:https://github.com/terinjokes/gulp-uglify
2.2、安裝:命令提示符執行 cnpm install gulp-uglify --save-dev
2.3、注意:沒有安裝cnpm請使用 npm install gulp-uglify --save-dev
。 什么是cnpm,如何安裝?
2.4、說明:--save-dev
保存配置信息至 package.json 的 devDependencies 節點。為什么要保存至package.json?
3、配置gulpfile.js
3.1、基本使用
1
2
3
4
5
6
7
8
|
var
gulp
=
require
(
'gulp'
)
,
uglify
=
require
(
'gulp-uglify'
)
;
gulp
.
task
(
'jsmin'
,
function
(
)
{
gulp
.
src
(
'src/js/index.js'
)
.
pipe
(
uglify
(
)
)
.
pipe
(
gulp
.
dest
(
'dist/js'
)
)
;
}
)
;
|
3.2、壓縮多個js文件
1
2
3
4
5
6
7
8
|
var
gulp
=
require
(
'gulp'
)
,
uglify
=
require
(
'gulp-uglify'
)
;
gulp
.
task
(
'jsmin'
,
function
(
)
{
gulp
.
src
(
[
'src/js/index.js'
,
'src/js/detail.js'
]
)
//多個文件以數組形式傳入
.
pipe
(
uglify
(
)
)
.
pipe
(
gulp
.
dest
(
'dist/js'
)
)
;
}
)
;
|
3.3、匹配符“!”,“*”,“**”,“{}”
1
2
3
4
5
6
7
8
9
10
|
var
gulp
=
require
(
'gulp'
)
,
uglify
=
require
(
'gulp-uglify'
)
;
gulp
.
task
(
'jsmin'
,
function
(
)
{
//壓縮src/js目錄下的所有js文件
//除了test1.js和test2.js(**匹配src/js的0個或多個子文件夾)
gulp
.
src
(
[
'src/js/*.js'
,
'!src/js/**/{test1,test2}.js'
]
)
.
pipe
(
uglify
(
)
)
.
pipe
(
gulp
.
dest
(
'dist/js'
)
)
;
}
)
;
|
3.4、指定變量名不混淆改變
1
2
3
4
5
6
7
8
9
10
11
|
var
gulp
=
require
(
'gulp'
)
,
uglify
=
require
(
'gulp-uglify'
)
;
gulp
.
task
(
'jsmin'
,
function
(
)
{
gulp
.
src
(
[
'src/js/*.js'
,
'!src/js/**/{test1,test2}.js'
]
)
.
pipe
(
uglify
(
{
//mangle: true,//類型:Boolean 默認:true 是否修改變量名
mangle
:
{
except
:
[
'require'
,
'exports'
,
'module'
,
'$'
]
}
//排除混淆關鍵字
}
)
)
.
pipe
(
gulp
.
dest
(
'dist/js'
)
)
;
}
)
;
|
3.5、gulp-uglify其他參數 具體參看
1
2
3
4
5
6
7
8
9
10
11
12
|
var
gulp
=
require
(
'gulp'
)
,
uglify
=
require
(
'gulp-uglify'
)
;
gulp
.
task
(
'jsmin'
,
function
(
)
{
gulp
.
src
(
[
'src/js/*.js'
,
'!src/js/**/{test1,test2}.js'
]
)
.
pipe
(
uglify
(
{
mangle
:
true
,
//類型:Boolean 默認:true 是否修改變量名
compress
:
true
,
//類型:Boolean 默認:true 是否完全壓縮
preserveComments
:
'all'
//保留所有注釋
}
)
)
.
pipe
(
gulp
.
dest
(
'dist/js'
)
)
;
}
)
;
|
4、執行任務
4.1、命令提示符執行:gulp jsmin
簡介:
使用gulp-uglify壓縮javascript文件,減小文件大小。
1、安裝nodejs/全局安裝gulp/項目安裝gulp/創建package.json和gulpfile.js文件
1.1、gulp基本使用還未掌握?請參看: gulp詳細入門教程
1.2、本示例目錄結構如下:
2、本地安裝gulp-uglify
2.1、github:https://github.com/terinjokes/gulp-uglify
2.2、安裝:命令提示符執行 cnpm install gulp-uglify --save-dev
2.3、注意:沒有安裝cnpm請使用 npm install gulp-uglify --save-dev
。 什么是cnpm,如何安裝?
2.4、說明:--save-dev
保存配置信息至 package.json 的 devDependencies 節點。為什么要保存至package.json?
3、配置gulpfile.js
3.1、基本使用
1
2
3
4
5
6
7
8
|
var
gulp
=
require
(
'gulp'
)
,
uglify
=
require
(
'gulp-uglify'
)
;
gulp
.
task
(
'jsmin'
,
function
(
)
{
gulp
.
src
(
'src/js/index.js'
)
.
pipe
(
uglify
(
)
)
.
pipe
(
gulp
.
dest
(
'dist/js'
)
)
;
}
)
;
|
3.2、壓縮多個js文件
1
2
3
4
5
6
7
8
|
var
gulp
=
require
(
'gulp'
)
,
uglify
=
require
(
'gulp-uglify'
)
;
gulp
.
task
(
'jsmin'
,
function
(
)
{
gulp
.
src
(
[
'src/js/index.js'
,
'src/js/detail.js'
]
)
//多個文件以數組形式傳入
.
pipe
(
uglify
(
)
)
.
pipe
(
gulp
.
dest
(
'dist/js'
)
)
;
}
)
;
|
3.3、匹配符“!”,“*”,“**”,“{}”
1
2
3
4
5
6
7
8
9
10
|
var
gulp
=
require
(
'gulp'
)
,
uglify
=
require
(
'gulp-uglify'
)
;
gulp
.
task
(
'jsmin'
,
function
(
)
{
//壓縮src/js目錄下的所有js文件
//除了test1.js和test2.js(**匹配src/js的0個或多個子文件夾)
gulp
.
src
(
[
'src/js/*.js'
,
'!src/js/**/{test1,test2}.js'
]
)
.
pipe
(
uglify
(
)
)
.
pipe
(
gulp
.
dest
(
'dist/js'
)
)
;
}
)
;
|
3.4、指定變量名不混淆改變
1
2
3
4
5
6
7
8
9
10
11
|
var
gulp
=
require
(
'gulp'
)
,
uglify
=
require
(
'gulp-uglify'
)
;
gulp
.
task
(
'jsmin'
,
function
(
)
{
gulp
.
src
(
[
'src/js/*.js'
,
'!src/js/**/{test1,test2}.js'
]
)
.
pipe
(
uglify
(
{
//mangle: true,//類型:Boolean 默認:true 是否修改變量名
mangle
:
{
except
:
[
'require'
,
'exports'
,
'module'
,
'$'
]
}
//排除混淆關鍵字
}
)
)
.
pipe
(
gulp
.
dest
(
'dist/js'
)
)
;
}
)
;
|
3.5、gulp-uglify其他參數 具體參看
1
2
3
4
5
6
7
8
9
10
11
12
|
var
gulp
=
require
(
'gulp'
)
,
uglify
=
require
(
'gulp-uglify'
)
;
gulp
.
task
(
'jsmin'
,
function
(
)
{
gulp
.
src
(
[
'src/js/*.js'
,
'!src/js/**/{test1,test2}.js'
]
)
.
pipe
(
uglify
(
{
mangle
:
true
,
//類型:Boolean 默認:true 是否修改變量名
compress
:
true
,
//類型:Boolean 默認:true 是否完全壓縮
preserveComments
:
'all'
//保留所有注釋
}
)
)
.
pipe
(
gulp
.
dest
(
'dist/js'
)
)
;
}
)
;
|
4、執行任務
4.1、命令提示符執行:gulp jsmin