grunt完整的配置demo
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的更多相关文章
- log4net保存到数据库系列四、完整代码配置log4net
园子里面有很多关于log4net保存到数据库的帖子,但是要动手操作还是比较不易,从头开始学习log4net数据库日志一.WebConfig中配置log4net 一.WebConfig中配置log4ne ...
- echarts标准饼图(一)——基本配置demo
echarts标准饼图解读共分为四部分, 一.基本配置demo 二.标题(title)配置 三.提示框(tooltip)配置 四.图例(legend)配置 五.系列列表(series )配置 下面是一 ...
- 【转】android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)
原文网址:http://www.cnblogs.com/zdz8207/archive/2012/11/27/android-ndk-install.html android 最新 NDK r8 在w ...
- android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)
android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创) 一直想搞NDK开发却一直给其他事情耽搁了,参考了些网上的资料今天终于把 ...
- Maven - settings.xml简易配置Demo
前言 这里贴一下settings.xml的一个简易配置demo,就是简单配置了:本地的仓库地址.阿里云镜像.指定使用jdk1.8进行编译. 这里使用的Maven是3.5.0版本的. 配置文件demo ...
- 利用webuploader插件上传图片文件,完整前端示例demo,服务端使用SpringMVC接收
利用WebUploader插件上传图片文件完整前端示例demo,服务端使用SpringMVC接收 Webuploader简介 WebUploader是由Baidu WebFE(FEX)团队开发的一 ...
- django1.7 配置demo教程(环境搭建)
近期又用到django做个简单项目,1年多没用过了有些手生,按理说没啥问题吧 以下是一个简单的环境搭建demo过程: 前提条件:准备了python2.7已经安装 1.搭建django环境下载 http ...
- grunt安装,配置记录
进了新的公司,需要重构一个项目,从头开始.本人患懒癌已久,一直没有写博客的打算,也是因为资质还比较浅,写不出什么富有涵养的内容,后来想了想,就当自己的笔记吧.这次从新开始,未尝不是一个博客开始的好时机 ...
- grunt 检测js配置
module.exports = function(grunt) { // 项目配置 grunt.initConfig({ pkg: grunt.file.readJSON('package.json ...
随机推荐
- JS:面向对象(进阶篇)
组合使用构造函数和原型模式 构造函数模式用于定义实例属性,而原型模式用于定义方法和共享属性.结果,每个实例都会有自己的一份实例属性的副本,但同时又共享这对方法的引用,最大限度的节省了内存. funct ...
- 2019-4-15-VisualStudio-如何在-NuGet-包里面同时包含-DEBUG-和-RELEASE-的库
title author date CreateTime categories VisualStudio 如何在 NuGet 包里面同时包含 DEBUG 和 RELEASE 的库 lindexi 20 ...
- Ubuntu16.04 使用PPA安装JDK8
安装Java 8 ( 支持 Ubuntu 10.04 - Ubuntu 16.04 ) 1.如果你在 Ubuntu 软件中心安装过 OpenJDK,请先使用如下命令将其删除: sudo apt-get ...
- selenium如何操作页面树状列表
selenium如何操作页面树状列表??举个例子:我要怎么操作如下图所示的树状结构列表?我要对这个树状结构列表做什么操作? 一.思路 1.根据driver.find_element_by_xpath( ...
- openwrt redis
2071 make V=s 2072 cd build_dir/target-x86_64_uClibc-0.9.33.2/root-x86/ cd package/network/services/ ...
- HTTP状态码及请求头
状态码 状态码告知从服务器端返回的请求结果 一般可分为5个大类 1XX Informational(信息性状态码) 2XX Success(成功状态码) 3XX Redirection(重定向状态码) ...
- Java&Quartz实现任务调度
目录 Java&Quartz实现任务调度 1.Quartz的作用 2.预备 3.Quartz核心 3.1.Job接口 3.2.JobDetail类 3.3 JobExecutionContex ...
- Perl 循环
Perl 循环 有的时候,我们可能需要多次执行同一块代码.一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推. 编程语言提供了更为复杂执行路径的多种控制结构. 循环语 ...
- 【Tomcat】Tomcat调优
Tomcat的默认配置,性能并不是最优的,我们可以通过优化tomcat以此来提高网站的并发能力.提高Tomcat的性能可以分为两个方向. 服务器资源 服务器所能提供CPU.内存.硬盘的性能对处理能力有 ...
- Java中JNI的使用详解第六篇:C/C++中的引用类型和Id的缓存
首先来看一下C/C++中的引用 从Java虚拟机创建的对象传到本地C/C++代码时会产生引用,根据Java的垃圾回收机制,只要有引用存在就不会触发该引用指向的Java对象的垃圾回收 第一.局部引用: ...