Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
saasio
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
reyun
saasio
Commits
94db87f0
Commit
94db87f0
authored
Feb 26, 2018
by
manxiaoqiang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
gruntfile
parent
82eccd62
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
393 additions
and
0 deletions
+393
-0
Gruntfile.js
Gruntfile.js
+393
-0
No files found.
Gruntfile.js
0 → 100644
View file @
94db87f0
"use strict"
;
var
LIVERELOAD_PORT
,
lrSnippet
,
mountFolder
;
/*解决跨域问题*/
var
proxySnippet
=
require
(
'grunt-connect-proxy/lib/utils'
).
proxyRequest
;
LIVERELOAD_PORT
=
35728
;
/*页面自动刷新,即代码有修改页面就自动刷新*/
lrSnippet
=
require
(
"connect-livereload"
)({
port
:
LIVERELOAD_PORT
});
mountFolder
=
function
(
connect
,
dir
)
{
return
connect
[
"static"
](
require
(
"path"
).
resolve
(
dir
));
};
module
.
exports
=
function
(
grunt
)
{
var
yeomanConfig
;
/*自动读取并加载项目 packge.json 文件中 devDependencies 配置下以 grunt-* 开头的依赖库*/
require
(
"load-grunt-tasks"
)(
grunt
);
/*构建完成后,会给出每个任务的耗时及占总耗时的百分比*/
require
(
"time-grunt"
)(
grunt
);
yeomanConfig
=
{
app
:
"src/main/websrc"
,
dist
:
"dist"
,
docs
:
"documentation"
};
grunt
.
initConfig
({
yeoman
:
yeomanConfig
,
watch
:
{
compass
:
{
files
:
[
"<%= yeoman.app %>/styles/**/*.{scss,sass}"
],
tasks
:
[
"compass:server"
]
},
livereload
:
{
options
:
{
livereload
:
LIVERELOAD_PORT
//或者true
},
files
:
[
"<%= yeoman.app %>/index.html"
,
"<%= yeoman.app %>/template/**/*.html"
,
"<%= yeoman.app %>/js/**/*.js"
,
"<%= yeoman.app %>/styles/**/*.scss"
,
".tmp/styles/**/*.css"
,
"<%= yeoman.app %>/images/**/*.{png,jpg,jpeg,gif,webp,svg}"
]
}
},
connect
:
{
proxies
:
[{
context
:
[
'/api'
],
host
:
'localhost'
,
//host: '192.168.2.9',
port
:
8091
,
https
:
false
,
xforward
:
true
,
hideHeaders
:
[
'x-removed-header'
]
}],
options
:
{
port
:
9008
,
hostname
:
"*"
},
livereload
:
{
options
:
{
middleware
:
function
(
connect
)
{
return
[
lrSnippet
,
mountFolder
(
connect
,
".tmp"
),
mountFolder
(
connect
,
yeomanConfig
.
app
),
proxySnippet
];
}
}
},
test
:
{
options
:
{
middleware
:
function
(
connect
)
{
return
[
mountFolder
(
connect
,
".tmp"
),
mountFolder
(
connect
,
"test"
)];
}
}
},
dist
:
{
options
:
{
middleware
:
function
(
connect
)
{
//return [mountFolder(connect, yeomanConfig.dist)];
return
[
lrSnippet
,
mountFolder
(
connect
,
yeomanConfig
.
dist
),
proxySnippet
];
}
}
}
},
open
:
{
server
:
{
url
:
"http://localhost:<%= connect.options.port %>"
}
},
clean
:
{
dist
:
{
files
:
[
{
dot
:
true
,
src
:
[
".tmp"
,
"<%= yeoman.dist %>/*"
,
"!<%= yeoman.dist %>/.git*"
]
}
]
},
all
:
[
".tmp"
,
".sass-cache"
,
"readme.md"
,
"node_modules"
,
".git"
],
server
:
".tmp"
},
jshint
:
{
//代码质量检查
options
:
{
jshintrc
:
".jshintrc"
},
all
:
[
"Gruntfile.js"
,
"<%= yeoman.app %>/app/**/*.js"
]
},
injector
:
{
// JS/CSS 自动注入工具, 可以自动将 JS/CSS 的引用注入到 HTML 文件中
options
:
{
relative
:
true
},
local_dependencies
:
{
files
:
{
"<%= yeoman.app %>/index.html"
:
[
"<%= yeoman.app %>/app/**/*.module.js"
,
"<%= yeoman.app %>/app/**/*.js"
,
"!"
+
"<%= yeoman.app %>/**/*.spec.js"
,
"<%= yeoman.app %>/**/*.css"
]
}
}
},
compass
:
{
options
:
{
sassDir
:
"<%= yeoman.app %>/styles"
,
cssDir
:
".tmp/styles"
,
imagesDir
:
"<%= yeoman.app %>/images/"
,
javascriptsDir
:
"<%= yeoman.app %>/js"
,
httpFontsPath
:
"fonts"
,
relativeAssets
:
true
},
dist
:
{
options
:
{
outputStyle
:
'compressed'
,
debugInfo
:
false
,
noLineComments
:
true
}
},
server
:
{
options
:
{
debugInfo
:
true
}
},
forvalidation
:
{
options
:
{
debugInfo
:
false
,
noLineComments
:
false
}
}
},
useminPrepare
:
{
html
:
[
"<%= yeoman.app %>/index.html"
,
"<%= yeoman.app %>/login.html"
,
"<%= yeoman.app %>/activation.html"
,
"<%= yeoman.app %>/failure.html"
,
"<%= yeoman.app %>/forget.html"
,
"<%= yeoman.app %>/register.html"
,
"<%= yeoman.app %>/success.html"
,
"<%= yeoman.app %>/resetpwd.html"
,
"<%= yeoman.app %>/olduser.html"
,
"<%= yeoman.app %>/demo.html"
,
"<%= yeoman.app %>/home.html"
,
"<%= yeoman.app %>/main.html"
],
options
:
{
dest
:
"<%= yeoman.dist %>"
,
flow
:
{
steps
:
{
js
:
[
"concat"
],
css
:
[
"concat"
]
//concat,cssmin
},
post
:
[]
}
}
},
usemin
:
{
html
:
[
"<%= yeoman.dist %>/**/*.html"
],
options
:
{
dirs
:
[
"<%= yeoman.dist %>"
],
blockReplacements
:
{
css
:
function
(
block
)
{
var
final_name
=
block
.
dest
;
final_name
+=
"?r="
+
Math
.
random
();
var
media
=
block
.
media
?
' media="'
+
block
.
media
+
'"'
:
''
;
return
'<link rel="stylesheet" href="'
+
final_name
+
'"'
+
media
+
'>'
;
//此处为css标签的定制
},
js
:
function
(
block
)
{
var
final_name
=
block
.
dest
;
final_name
+=
"?r="
+
Math
.
random
();
var
defer
=
block
.
defer
?
'defer '
:
''
;
var
async
=
block
.
async
?
'async '
:
''
;
return
'<script '
+
defer
+
async
+
'src="'
+
final_name
+
'"><
\
/script>'
;
//次处为js标签的定制
}
}
}
},
htmlmin
:
{
dist
:
{
options
:
{},
files
:
[
{
expand
:
true
,
cwd
:
"<%= yeoman.app %>"
,
src
:
[
"*.html"
,
"template/**/*.html"
],
dest
:
"<%= yeoman.dist %>"
}
]
}
},
copy
:
{
dist
:
{
files
:
[
{
expand
:
true
,
dot
:
true
,
cwd
:
"<%= yeoman.app %>"
,
dest
:
"<%= yeoman.dist %>"
,
src
:
[
"data/**/*"
,
"font/**/*"
,
"images/**/*"
,
"**/*.html"
,
"template/**/*.png"
,
"template/**/*.jpg"
,
"*.ico"
]
},
{
expand
:
true
,
cwd
:
".tmp/images"
,
dest
:
"<%= yeoman.dist %>/images"
,
src
:
[
"generated/*"
]
},
{
expand
:
true
,
cwd
:
""
,
dest
:
"<%=yeoman.dist%>"
,
src
:
[
"Gruntfile.js"
,
'test/**/*'
]
}
]
},
styles
:
{
// expand: true,
// cwd: "<%= yeoman.app %>/styles",
// dest: ".tmp/styles/",
// src: "**/*.css"
}
},
concurrent
:
{
server
:
[
"compass:server"
,
"copy:styles"
],
dist
:
[
"compass:dist"
,
"copy:styles"
,
"htmlmin"
]
},
cssmin
:
{
options
:
{
keepSpecialComments
:
'0'
},
build
:
{
files
:{
"<%= yeoman.dist %>/styles/index.css"
:[
".tmp/styles/*.css"
,
"<%= yeoman.app %>/styles/*.css"
,
"!.tmp/styles/login.css"
,
"!.tmp/styles/home.css"
],
"<%= yeoman.dist %>/styles/login.css"
:[
".tmp/styles/login.css"
],
"<%= yeoman.dist %>/styles/home.css"
:[
".tmp/styles/home.css"
]
}
}
},
concat
:
{
options
:
{
separator
:
grunt
.
util
.
linefeed
+
';'
+
grunt
.
util
.
linefeed
},
// cssbuild: {
// src: ".tmp/styles/*.css",
// dest: "<%= yeoman.dist %>/styles/app.css"
// },
dist
:
{}
},
uglify
:
{
options
:
{
mangle
:
true
,
//混淆变量名
compress
:
{
drop_console
:
true
}
},
dist
:
{
// if do this uglify for app, the app can not start up
files
:
{
"<%= yeoman.dist %>/scripts/app.js"
:
[
"<%= yeoman.dist %>/scripts/app.js"
],
"<%= yeoman.dist %>/scripts/ui.js"
:
[
"<%= yeoman.dist %>/scripts/ui.js"
],
"<%= yeoman.dist %>/scripts/lgui.js"
:
[
"<%= yeoman.dist %>/scripts/lgui.js"
],
"<%= yeoman.dist %>/scripts/regui.js"
:
[
"<%= yeoman.dist %>/scripts/regui.js"
],
"<%= yeoman.dist %>/scripts/change.js"
:
[
"<%= yeoman.dist %>/scripts/change.js"
],
"<%= yeoman.dist %>/scripts/failure.js"
:
[
"<%= yeoman.dist %>/scripts/failure.js"
],
"<%= yeoman.dist %>/scripts/forget.js"
:
[
"<%= yeoman.dist %>/scripts/forget.js"
],
"<%= yeoman.dist %>/scripts/register.js"
:
[
"<%= yeoman.dist %>/scripts/register.js"
],
"<%= yeoman.dist %>/scripts/success.js"
:
[
"<%= yeoman.dist %>/scripts/success.js"
],
"<%= yeoman.dist %>/scripts/resetpwd.js"
:
[
"<%= yeoman.dist %>/scripts/resetpwd.js"
],
"<%= yeoman.dist %>/scripts/olduser.js"
:
[
"<%= yeoman.dist %>/scripts/olduser.js"
]
}
}
},
mock
:
{
//currently just list all mock api in this files, we need to separate them based the module.
your_target
:
{
options
:
{
port
:
9001
,
delay
:
200
,
cookie
:
{},
placeholders
:
{
getNumArr
:
function
(
len
)
{
//返回len个随机整数
var
arr
=
[];
for
(
var
i
=
0
;
i
<
len
;
i
++
){
arr
.
push
(
this
.
d1000
());
}
return
arr
;
},
getFloatArr
:
function
(
len
)
{
//返回len个随机浮点数
var
arr
=
[];
for
(
var
i
=
0
;
i
<
len
;
i
++
){
arr
.
push
(
this
.
float
(
0
,
100
,
0
,
2
));
}
return
arr
;
},
getLastDates
:
function
(
len
,
hasToday
)
{
//返回最近len天数据,hasToday为true从今天开始往前推
var
arr
=
[];
var
dd
=
new
Date
(),
d
=
dd
.
getDate
();
var
m
=
d
,
start
=
1
,
end
=
len
;
if
(
hasToday
&&
hasToday
==
true
){
start
=
0
;
end
-=
1
;
}
for
(
var
i
=
start
;
i
<=
end
;
i
++
){
var
day
=
m
-
i
;
if
(
day
==
0
){
dd
.
setDate
(
m
-
i
);
m
+=
dd
.
getDate
();
}
else
{
dd
.
setDate
(
m
-
i
);
}
arr
.
unshift
(
this
.
date
(
dd
,
'YYYY-MM-DD'
));
}
return
arr
;
},
getLastDay
:
function
(
len
)
{
//返回最近第len天,0是当天
var
dd
=
new
Date
(),
d
=
dd
.
getDate
();
dd
.
setDate
(
d
-
len
);
return
this
.
date
(
dd
,
'YYYY-MM-DD'
)
},
getLastMonth
:
function
(
len
)
{
//返回最近第len月的第一天,0是当月,eg:2017-03-01
var
dd
=
new
Date
(),
m
=
dd
.
getMonth
();
dd
.
setMonth
(
m
-
len
);
dd
.
setDate
(
1
);
return
this
.
date
(
dd
,
'YYYY-MM-DD'
)
},
getLastWeek
:
function
(
len
)
{
//返回最近第几周的周一,0是当周的周一
var
dd
=
new
Date
(),
d
=
dd
.
getDate
(),
w
=
dd
.
getDay
();
w
=
w
==
0
?
7
:
w
;
dd
.
setDate
(
d
-
w
+
1
-
len
*
7
);
return
this
.
date
(
dd
,
'YYYY-MM-DD'
);
},
getHourData
:
function
(
num
,
hour
)
{
//根据小时对比返回当前应显示数
var
nh
=
new
Date
().
getHours
();
if
(
nh
>=
hour
){
return
num
;
}
else
{
return
0
;
}
}
},
route
:
{
}
},
cwd
:
'./test/mocks'
,
src
:
[
'*.json'
]
}
}
});
// grunt.registerTask("docs", function() {
// return grunt.task.run(["jade:docs", "connect:docs", "open", "watch"]);
// });
grunt
.
registerTask
(
"server"
,
function
(
target
)
{
if
(
target
===
"dist"
)
{
return
grunt
.
task
.
run
([
"serve:dist"
]);
}
return
grunt
.
task
.
run
([
"serve"
]);
});
grunt
.
registerTask
(
"serve"
,
function
(
target
)
{
if
(
target
===
"dist"
)
{
//return grunt.task.run(["build", "open", "connect:dist:keepalive"]);
return
grunt
.
task
.
run
([
"build"
,
"configureProxies"
,
"connect:dist:keepalive"
,
"open"
]);
}
return
grunt
.
task
.
run
([
"clean:server"
,
"concurrent:server"
,
"configureProxies"
,
"connect:livereload"
,
"open"
,
"watch"
]);
});
grunt
.
registerTask
(
"build"
,
[
"clean:dist"
,
"useminPrepare"
,
"concurrent:dist"
,
"copy:dist"
,
"concat"
,
"cssmin"
,
"uglify"
,
"usemin"
]);
return
grunt
.
registerTask
(
"default"
,
[
"build"
]);
};
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment