Commit 94db87f0 by manxiaoqiang

gruntfile

parent 82eccd62
"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"]);
};
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment