1 const path = require('path')
2 const fs = require('fs');
3 module.exports = function (grunt) {
4 grunt.registerTask('setapi', 'setapi..', function (arg1, arg2) {
5 var RouteMapLibPath = './dest/limsStyle/RouteMapLib-1.1.js';
6 var data = fs.readFileSync('./dest/limsStyle/config.json');
7 var RouteMapLib = fs.readFileSync(RouteMapLibPath).toString();
8 data = JSON.parse(data);
9 if (typeof arg1 != 'undefined') {
10 switch (arg1) {
11 case 'dev': {
12 replaceConfig(data.devconfig)
13 }; break;
14 case 'test': {
15 replaceConfig(data.testconfig)
16 }; break;
17 case 'build': {
18 replaceConfig(data.buildconfig)
19 }; break;
20 }
21 }
22 else {
23 replaceConfig(data.location)
24 }
25 fs.writeFileSync(RouteMapLibPath, RouteMapLib);
26
27 function replaceConfig(d) {
28 RouteMapLib = RouteMapLib.replace('{#ajaxUrl}', d.ajaxUrl);
29 RouteMapLib = RouteMapLib.replace('{#user_token}', d.user_token);
30 RouteMapLib = RouteMapLib.replace('{#ELNEdit}', d.ELNEdit);
31 // console.log(RouteMapLib);
32 };
33
34 });
35
36
37 grunt.initConfig({
38 clean: ['/dest'],
39 jshint: {
40 files: ['limsStyle/postil.js'],
41 options: {
42 globals: {
43 jQuery: true
44 }
45 }
46 },
47 watch: {
48 cwd: 'src',
49 files: ['src/**/*.js', 'src/**/*.json', 'src/**/*.html', 'src/limsStyle/*.css', 'src/**/*.less'],
50 tasks: ['copy:main', 'setapi', 'jshint', 'babel'],
51 options: {
52 reload: true,
53 livereload: 35729
54 }
55 }
56 ,
57 uglify: {
58 main: {
59 src: '',
60 dest: ''
61 },
62 },
63 copy: {
64 processContentExclude: ['othen/**'],
65 main: {
66 expand: true,
67 cwd: 'src',
68 //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/**'], //**
69 src: ['limsStyle/**', 'othen/**', '_temp/**', 'images/**', 'layertemplate/**', 'ElnIndex.html'],
70 dest: 'dest/',
71 flatten: false,
72 filter: 'isFile'
73 },
74 all: {
75 expand: true,
76 cwd: 'src',
77 src: ['**'], //**
78 dest: 'dest/',
79 flatten: false,
80 filter: 'isFile'
81 }
82 }
83 , babel: {
84 options: {
85 sourceMap: true,
86 presets: ['babel-preset-es2015']
87
88 },
89 dist: {
90 files: [{
91 expand: true,
92 cwd: 'src/',
93 src: ['limsStyle/postil.js'],
94 dest: 'dest/'
95 }]
96 }
97 },
98 connect: {
99 options: {
100 port: 9000,
101 hostname: 'localhost',
102 livereload: 35729
103 },
104 server: {
105 options: {
106 open: true,
107 base: [
108 "dest"
109 ]
110 }
111 }
112 },
113 });
114
115 grunt.loadNpmTasks('grunt-contrib-uglify');
116 grunt.loadNpmTasks('grunt-contrib-jshint');
117 grunt.loadNpmTasks('grunt-contrib-copy');
118 grunt.loadNpmTasks('grunt-contrib-clean');
119 grunt.loadNpmTasks('grunt-contrib-watch');
120 grunt.loadNpmTasks('grunt-contrib-connect');
121 grunt.loadNpmTasks('grunt-babel');
122 // grunt.registerTask('clean', ['clean:release', 'copy:all']);
123
124
125 grunt.registerTask('default', ['copy:main', 'babel', 'setapi', 'connect', 'watch']);
126 grunt.registerTask('dev', ['copy:main', 'babel', 'setapi:dev'])
127 grunt.registerTask('test', ['copy:all', 'babel', 'setapi:test']);
128 grunt.registerTask('build', ['copy:all', 'babel', 'setapi:build']);
129
130
131 };