const path = require('path')
const fs = require('fs');
module.exports = function (grunt) {
grunt.registerTask('setapi', 'setapi..', function (arg1, arg2) {
var RouteMapLibPath = './dest/limsStyle/RouteMapLib-1.1.js';
var data = fs.readFileSync('./dest/limsStyle/config.json');
var RouteMapLib = fs.readFileSync(RouteMapLibPath).toString();
data = JSON.parse(data);
if (typeof arg1 != 'undefined') {
switch (arg1) {
case 'dev': {
replaceConfig(data.devconfig)
}; break;
case 'test': {
replaceConfig(data.testconfig)
}; break;
case 'build': {
replaceConfig(data.buildconfig)
}; break;
}
}
else {
replaceConfig(data.location)
}
fs.writeFileSync(RouteMapLibPath, RouteMapLib); function replaceConfig(d) {
RouteMapLib = RouteMapLib.replace('{#ajaxUrl}', d.ajaxUrl);
RouteMapLib = RouteMapLib.replace('{#user_token}', d.user_token);
RouteMapLib = RouteMapLib.replace('{#ELNEdit}', d.ELNEdit);
// console.log(RouteMapLib);
}; }); grunt.initConfig({
clean: ['/dest'],
jshint: {
files: ['limsStyle/postil.js'],
options: {
globals: {
jQuery: true
}
}
},
watch: {
cwd: 'src',
files: ['src/**/*.js', 'src/**/*.json', 'src/**/*.html', 'src/limsStyle/*.css', 'src/**/*.less'],
tasks: ['copy:main', 'setapi', 'jshint', 'babel'],
options: {
reload: true,
livereload: 35729
}
}
,
uglify: {
main: {
src: '',
dest: ''
},
},
copy: {
processContentExclude: ['othen/**'],
main: {
expand: true,
cwd: 'src',
//src: ['**', '!*.sln', '!**lib/diff/**', '!**lib/layer-v3.1.1/**', '!**lib/layerdate/**', '!**.vs/**', '!**lib/bootstrap-3.3.7-dist/**', '!**lib/ueditor1_4_3-utf8-net/third-party/**', '!**lib/ueditor1_4_3-utf8-net/third-party/dialogs/**'], //**
src: ['limsStyle/**', 'othen/**', '_temp/**', 'images/**', 'layertemplate/**', 'ElnIndex.html'],
dest: 'dest/',
flatten: false,
filter: 'isFile'
},
all: {
expand: true,
cwd: 'src',
src: ['**'], //**
dest: 'dest/',
flatten: false,
filter: 'isFile'
}
}
, babel: {
options: {
sourceMap: true,
presets: ['babel-preset-es2015'] },
dist: {
files: [{
expand: true,
cwd: 'src/',
src: ['limsStyle/postil.js'],
dest: 'dest/'
}]
}
},
connect: {
options: {
port: 9000,
hostname: 'localhost',
livereload: 35729
},
server: {
options: {
open: true,
base: [
"dest"
]
}
}
},
}); grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-copy');
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-connect');
grunt.loadNpmTasks('grunt-babel');
// grunt.registerTask('clean', ['clean:release', 'copy:all']); grunt.registerTask('default', ['copy:main', 'babel', 'setapi', 'connect', 'watch']);
grunt.registerTask('dev', ['copy:main', 'babel', 'setapi:dev'])
grunt.registerTask('test', ['copy:all', 'babel', 'setapi:test']);
grunt.registerTask('build', ['copy:all', 'babel', 'setapi:build']); };

grunt完整的配置demo的更多相关文章

  1. log4net保存到数据库系列四、完整代码配置log4net

    园子里面有很多关于log4net保存到数据库的帖子,但是要动手操作还是比较不易,从头开始学习log4net数据库日志一.WebConfig中配置log4net 一.WebConfig中配置log4ne ...

  2. echarts标准饼图(一)——基本配置demo

    echarts标准饼图解读共分为四部分, 一.基本配置demo 二.标题(title)配置 三.提示框(tooltip)配置 四.图例(legend)配置 五.系列列表(series )配置 下面是一 ...

  3. 【转】android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)

    原文网址:http://www.cnblogs.com/zdz8207/archive/2012/11/27/android-ndk-install.html android 最新 NDK r8 在w ...

  4. android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)

      android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创) 一直想搞NDK开发却一直给其他事情耽搁了,参考了些网上的资料今天终于把 ...

  5. Maven - settings.xml简易配置Demo

    前言 这里贴一下settings.xml的一个简易配置demo,就是简单配置了:本地的仓库地址.阿里云镜像.指定使用jdk1.8进行编译. 这里使用的Maven是3.5.0版本的. 配置文件demo ...

  6. 利用webuploader插件上传图片文件,完整前端示例demo,服务端使用SpringMVC接收

    利用WebUploader插件上传图片文件完整前端示例demo,服务端使用SpringMVC接收 Webuploader简介   WebUploader是由Baidu WebFE(FEX)团队开发的一 ...

  7. django1.7 配置demo教程(环境搭建)

    近期又用到django做个简单项目,1年多没用过了有些手生,按理说没啥问题吧 以下是一个简单的环境搭建demo过程: 前提条件:准备了python2.7已经安装 1.搭建django环境下载 http ...

  8. grunt安装,配置记录

    进了新的公司,需要重构一个项目,从头开始.本人患懒癌已久,一直没有写博客的打算,也是因为资质还比较浅,写不出什么富有涵养的内容,后来想了想,就当自己的笔记吧.这次从新开始,未尝不是一个博客开始的好时机 ...

  9. grunt 检测js配置

    module.exports = function(grunt) { // 项目配置 grunt.initConfig({ pkg: grunt.file.readJSON('package.json ...

随机推荐

  1. (转载)理解和使用Promise.all和Promise.race

    声明:本文转载自:https://www.jianshu.com/p/7e60fc1be1b2 一.Pomise.all的使用 Promise.all可以将多个Promise实例包装成一个新的Prom ...

  2. Codeforces Round #536 E. Lunar New Year and Red Envelopes /// 贪心 记忆化搜索 multiset取最大项

    题目大意: 给定n m k:(1≤n≤1e5, 0≤m≤200, 1≤k≤1e5) 表示n个时间长度内 最多被打扰m次 k个红包 接下来k行描述红包 s t d w:(1≤s≤t≤d≤n , 1≤w≤ ...

  3. ECMS清除挂马以及后台升级实战(从ecms6.6~ecms7.0)

    当时状况 Windows Server 2008 R2 Enterprise + 帝国CMS6.6 + MySql   server软件: Microsoft-IIS/7.5 操作系统: WINNT ...

  4. python--面向对象:封装

    广义上面向对象的封装 :代码的保护,面向对象的思想本身就是一种只让自己的对象能调用自己类中的方法 狭义上的封装 ——> 面向对象的三大特性之一属性 和 方法都藏起来 不让你看见 "&q ...

  5. JAVA里面的int类型 和Integer类型,有什么不一样

    JAVA里面的int类型 和Integer类型,有什么不一样 原创 2013年09月04日 23:15:11 标签: java / 2120 编辑 删除 JAVA里面的int类型 和Integer类型 ...

  6. ulimit - 获取和改变用户的限制设定

    大纲 #include <ulimit.h> long ulimit(int cmd, long newlimit); 描述 警告: 这个函数已经被废弃. glibc 不再提供这个包含文件 ...

  7. Tomcat爆破

    把输入的账户和密码包起来 选择第三个模式 第一个添加用户名 第二个添加: 第三个添加密码 选择编码格式 取消打钩

  8. cdn 的配置及原理

    CDN概况 CDN的全称是Content Delivery Network,即内容分发网络. CND加速主要是加速静态资源,如网站上面上传的图片.媒体,以及引入的一些Js.css等文件. CND加速需 ...

  9. nginx防DDOS、cc、爬虫攻击

    一.防止DDOS.CC攻击 http { limit_conn_zone $binary_remote_addr zone=perip:10m; limit_conn_zone $server_nam ...

  10. 杭电多校第一场-B-Operation

    题目描述 There is an integer sequence a of length n and there are two kinds of operations:0 l r: select ...