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 ...
随机推荐
- Spring Boot跨域问题解决方案
@Configurationpublic class CorsConfig { @Bean public FilterRegistrationBean corsFilter() { UrlBasedC ...
- MySQL 8.0及以上版本设置密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
- SQLite 小调研
一. 概况: SQLite 是 D. Richard Hipp 于 2000 年采用 C 语言编写的一个轻量级.跨平台的关系型数据库,支持大部分 SQL92 标准(比如视图.事务.触发器.blob 数 ...
- true - (成功的)什么都不做
总览 (SYNOPSIS) true [忽略命令行参数] true OPTION 描述 (DESCRIPTION) 程序 结束 时, 产生 表示 成功 的 状态码. 下列的 选项 没有 简写 形式. ...
- 标准 I/O (带缓冲)
标准IO中分文本流和二进制流 windows系统中:(1) 二进制流 - 换行符 '\n' (2) 文本流 - 换行符 ‘\r' '\n' linux 系统中:不区分文本流和二进制流:换行符 - ...
- 论文阅读笔记:《Interconnected Question Generation with Coreference Alignment and Conversion Flow Modeling》
论文阅读:<Interconnected Question Generation with Coreference Alignment and Conversion Flow Modeling& ...
- 移动端布局 + iscroll.js
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...
- Oracle 修改 新增 触发器 针对字段修改 触发器 误删Oracle表、数据、触发器找回 闪回查询
emmmm 写这个博客心情很复杂,,,本来这个触发器早就写好了,后来发生点事就写个博客当个备份吧,就当留纪念了:话不多数上问题以及SQL: 问题: 在ABONPB表上增加一个触发器,针对车牌号字段做u ...
- delphi 单元 MSHTML 之Ihtmldocument2
delphi : Ihtmldocument2接口的利用 MSHTML是微软公司的一个COM组件,该组件封装了HTML语言中的所有元素及其属性,穿越其供给的规范接口,能够访问指定网页的所有元素. MS ...
- Oracle实现行转列+Mybatis
1.需求 报表需要动态展示某几个公司分别在几个月内销售额情况(前端表头月份是动态的,月时间段是前端参数来选择的,最大为12个月), 页面展示如下 Oracle数据库中数据如下: 可以看到一个公司的月份 ...