gruntfile_hid

/*
* grunt-marsRev
* https://github.com/tdp100/grunt-marsRev
*
* Copyright (c) 2015 tangdeping
* Licensed under the MIT license.
*/
"use strict";
var fs = require("fs");
module.exports = function (grunt)
{
var scc_tag = "?vvscc=";
var scc_hash = "1030900"; //用版本号取代Hash值

var allconf = {}; //Project configuration

allconf.clean = //清空build
{
build: ["build"]
};

allconf.jshint = {}; //js语法检查
allconf.jshint.app =
{
files: {src: ["src/app/**/*.js"]},
options: {jshintrc: ".jshintrc"}
};

allconf.copy = {}; //复制
allconf.copy.main = {};
allconf.copy.main.files =
[
{
cwd: "theme/default/",
src: ["**", "!less/**", "!fonts/*.*", "!images/*.*", "!css/*.css"],
dest: "build/theme/default",
expand: true
}, {
cwd: "theme/default/",
src: ["css/business.customization.css"],
dest: "build/theme/default",
expand: true
}, {
src: [
"src/**",
"!src/app/framework/controllers/**",
"!src/app/framework/directive/**",
"!src/app/framework/services/**",
"!src/app/framework/views/**",
"!src/app/framework/localization/**",
"!src/app/services/**",
"!src/app/business/home/localization/**"
],
dest: "build/",
expand: true
}, {
src: [
"theme/**",
"!theme/dt/**",
"!theme/tlf-*/**",
"!theme/ctc/**",
"!theme/default/css/bootstrap.min.css",
"!theme/default/css/frame*.css",
"!theme/default/css/tiny*min.css",
"!theme/default/fonts/frameIcomoon.*",
"!theme/default/fonts/tinyFont.*",
"!theme/default/fonts/glyphicons-halflings-regular.*",
"!theme/default/images/**.**",
"!theme/default/css/home*.css"
],
dest: "build/",
expand: true
}, {
src: "index.html",
dest: "build/",
expand: true
}, {
src: "main.js",
dest: "build/",
expand: true
}
];

allconf.copy.default = {};
allconf.copy.default.files =
[
{
cwd: "i18n/default/",
src: [
"**",
"!**/framework.js",
"!**/widgetsLanguage.js",
"!**/framework.ext.js",
"!**/framework.common.js"
],
dest: "build/i18n/default/",
expand: true
}, {
src: ["src/app/business/home/localization/*.js"],
dest: "build/",
expand: true
}
];

allconf.replace = {}; //搜索要合并的css, 并替换文本
allconf.replace.gather = {};
allconf.replace.gather.files =
[{
dest: "build/",
expand: true,
src: ["index.html"]
}];
allconf.replace.gather.options =
{
patterns:
[{
//Grab the <!--business-css-start--> and <!--business-css-end--> comments and everything in-between
match: /\<\!\-\-business\-css\-start[\s\S]*business\-css\-end\-\-\>/,
replacement: function (matchedString) {
return "";
}
},{
//Grab the <!--framework-css-start--> and <!--framework-css-end--> comments and everything in-between
match: /\<\!\-\-framework\-css\-start[\s\S]*framework\-css\-end\-\-\>/,
replacement: function ()
{
//Replace the entire business-css-start to business-css-end block with this <link> tag
return "<link rel=\"stylesheet\" type=\"text/css\" href=\"theme/default/css/combined-framework.min.css\"/>";
}
}]
};

allconf.replace.fixtures = {};
allconf.replace.fixtures.files =
[{
dest: "./",
expand: true,
src: ["build/**/**.js"]
}];
allconf.replace.fixtures.options = {};
allconf.replace.fixtures.options.patterns =
[{
match: /define\s*\(\s*((\'|\")[\w\d\-_\/.!\,\:\[\]]+(\'|")\s*,?\s*)*\s*\[\s*((\'|")[\w\d\-_\/.!\,\:\[\]]+(\'|")\s*,?\s*)*\s*\]/ig,
replacement: function (matchedString)
{
return matchedString.replace(/(\'|")fixtures(\/[\w]+)+(\'|")/g, "\"\"");
}
}];

allconf.uglify = {}; //压缩
allconf.uglify.min = {};
allconf.uglify.min.options =
{
nameCache: false,
screwIE8: true,
compress: {
drop_console: true,
join_vars: false,
negate_iife: false,
sequences: false,
hoist_vars: true,
if_return: false
},
mangle: false,
beautify: {
quote_keys: true,
quote_style: 1
}
};
allconf.uglify.min.files =
[{
cwd:"build/",
src: ["i18n/**/*.js", "!i18n/**/*.min.js", "!i18n/**/*-min.js", "!i18n/**/framework.js"],
dest: "build/",
expand: true
}, {
cwd:"build/",
src: ["src/**/*.js", "!src/**/*.min.js","!src/app/framework/**", "!src/app/services/**"],
dest: "build/",
expand: true
}, {
cwd:"build/",
src: ["src/app/framework/framework.js"], dest: "build/",
expand: true
}, {
cwd:"build/",
src: ["src/app/framework/configures/frameworkRouterConfig.js"],
dest: "build/",
expand: true
}, {
cwd:"build/",
src: ["main.js"],
dest: "build/",
expand: true
}];

allconf.marsRev = {}; //hash
allconf.marsRev.options = {};
allconf.marsRev.options.hash =
{
//hash算法, 现在我们改成了Hash值, 随机数看起来并不好看, 表示版本号是1.3.2.SP1
algorithm: scc_hash,
inputEncoding: "utf8", //文件编码
length: 7 //hash命名的长度
};
allconf.marsRev.options.require =
{
requireJsPath: "lib/require.js", //require.js的路径
dataMainPath: "build/main.js", //data-main 文件的路径
configJSON: "main.json", //require.config中的配置提取到单独的json文件中
accessHtml: "build/index.html" //引入require.js的html文件
};
allconf.marsRev.options.cwd = "build"; //必填, 要hash的所有文件的目录名
allconf.marsRev.options.files =
[{
src: [
"/",
"!i18n/default/zh-cn",
"!i18n/default/de-de",
"!i18n/default/es-es",
"!i18n/default/pt-br"
]
}];


allconf.replace_url = {}; //replace path and url
allconf.replace_url.framework = {};
allconf.replace_url.framework.options = {};
allconf.replace_url.framework.options.remoteUrl = "/static/framework";
allconf.replace_url.framework.options.mainJs =
{
filePath: "build/main.js", //data-main 文件的路径
configFile: "main.json",
remotePaths: [
"can",
"app-remote",
"ui-router",
"bootstrap",
"moment",
"language-remote",
"lazy-load",
"remote-lib"
]
};
allconf.replace_url.framework.options.cwd = "build"; //current work directory
allconf.replace_url.framework.options.targetFiles =
[{
src: [
"index.html",
"src/app/framework/configures/frameworkRouterConfig.js"
]
}];
allconf.replace_url.framework.options.files =
[{
src: [
"./theme/default/images/favicon.ico",
"./theme/default/css/combined-framework.min.css",
"./theme/default/css/bootstrap.min.css",
"./theme/default/css/framework.customization.css",
"./urlDeal.js",
"./browserChecker.js",
"./lib/require.js",
"./lib/tiny/tiny.min.js",
"src/app/framework/views/nonsupportRegion.html",
"src/app/framework/views/accessDeclined.html",
]
}];
allconf.replace_url.framework.options.file_additional = scc_tag + scc_hash;

grunt.initConfig(allconf);

// These plugins provide necessary tasks.
grunt.loadNpmTasks("grunt-replace-url");
grunt.loadNpmTasks("grunt-marsrev"); //替换文件名
grunt.loadNpmTasks("grunt-safety");
grunt.loadNpmTasks("grunt-contrib-clean");
grunt.loadNpmTasks("grunt-contrib-copy");
grunt.loadNpmTasks("grunt-contrib-uglify"); //丑化代码
grunt.loadNpmTasks("grunt-contrib-jshint"); //js语法检查
grunt.loadNpmTasks("grunt-replace");

var model = grunt.option("model");

var steps = [
"clean:build",
"copy:main",
"copy:default",
"replace:gather",
"uglify:min",
"replace_url:framework",
"replace:fixtures"
];

if(model == "rename") {
steps.push("marsRev") //最后这一步替换文件名
}

grunt.registerTask("package", steps);
};



package.json

{
"name": "tdpRev",
"module": "tdpRev",
"version": "1.0.6",
"description": "HWS Console Home Portal",
"devDependencies": {
"grunt": "~0.4.5",
"grunt-contrib-clean": "~0.5.0",
"grunt-contrib-copy": "~0.4.1",
"grunt-contrib-concat": "~0.5.1",
"grunt-contrib-cssmin": "0.13.0",
"grunt-contrib-jshint": "~0.7.1",
"grunt-contrib-uglify": "~0.9.1",
"grunt-marsrev": "~1.2.0",
"grunt-safety": "~0.1.2",
"grunt-replace": "~0.9.2",
"grunt-replace-url": "~0.1.1",
"grunt-contrib-htmlmin": "2.3.0"
},
"dependencies": {}
}

转载于:https://www.cnblogs.com/mushimeng/p/9582840.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值