view Gruntfile.js @ 21:d0b6f5635d85

Added tag 1.0.2 for changeset c8162ac60edc
author Mikhail Kryshen <mikhail@kryshen.net>
date Fri, 13 Mar 2020 15:19:58 +0300
parents 4943c163d0b4
children
line source
1 'use strict';
3 module.exports = function (grunt) {
4 // These plugins provide necessary tasks.
5 grunt.loadNpmTasks('grunt-contrib-clean');
6 grunt.loadNpmTasks('grunt-contrib-requirejs');
7 grunt.loadNpmTasks('grunt-exec');
8 grunt.loadNpmTasks('@ambers/sdk');
10 var path = require('path'),
11 helpers = require('@ambers/sdk').helpers;
13 // Default task.
14 grunt.registerTask('default', ['amdconfig:app', 'amberc:all']);
15 grunt.registerTask('test', ['amdconfig:app', 'requirejs:test_runner', 'exec:test_runner', 'clean:test_runner']);
16 grunt.registerTask('devel', ['amdconfig:app', 'requirejs:devel']);
17 grunt.registerTask('deploy', ['amdconfig:app', 'requirejs:deploy']);
19 var id = function (x) {
20 return x
21 };
23 function mkDefine (deps, cb) {
24 return "define(" + JSON.stringify(deps) + "," + cb + ");"
25 }
27 var cbRequireAndPromiseMain = function (require) {
28 return new Promise(function (resolve, reject) {
29 require(["app/main"], resolve, reject);
30 });
31 };
33 // Project configuration.
34 grunt.initConfig({
35 // Metadata.
36 // pkg: grunt.file.readJSON(''),
37 banner: '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' +
38 '<%= grunt.template.today("yyyy-mm-dd") %>\n' +
39 '<%= pkg.homepage ? "* " + pkg.homepage + "\\n" : "" %>' +
40 '* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' +
41 ' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %> */\n',
42 // task configuration
43 amberc: {
44 options: {
45 amber_dir: path.join(__dirname, "node_modules", "@ambers", "lang"),
46 configFile: "config.js"
47 },
48 all: {
49 src: [
50 'src/Serpentron.st', 'src/Serpentron-Backend.st', // list all sources in dependency order
51 'src/Serpentron-Tests.st' // list all tests in dependency order
52 ],
53 amd_namespace: 'amber-serpentron',
54 libraries: ['amber/core/SUnit', 'silk/Silk']
55 }
56 },
58 amdconfig: {app: {dest: 'config.js'}},
60 requirejs: {
61 options: {
62 mainConfigFile: "config.js",
63 paths: {
64 "es6-promise/auto": "node_modules/es6-promise/dist/es6-promise.auto"
65 },
66 useStrict: true
67 },
68 deploy: {
69 options: {
70 rawText: {
71 "helios/index": "",
72 "app": mkDefine(["require", "es6-promise/auto"], cbRequireAndPromiseMain),
73 "app/main": mkDefine(["deploy", "amber/core/Platform-Browser"], id)
74 },
75 pragmas: {
76 excludeIdeData: true,
77 excludeDebugContexts: true
78 },
79 include: ['config', 'node_modules/requirejs/require', 'app'],
80 findNestedDependencies: true,
81 exclude: ['helios/index'],
82 optimize: "uglify2",
83 out: "the.js"
84 }
85 },
86 devel: {
87 options: {
88 rawText: {
89 "app": mkDefine(["require", "es6-promise/auto"], cbRequireAndPromiseMain),
90 "app/main": mkDefine(["devel", "amber/core/Platform-Browser"], id)
91 },
92 include: ['config', 'node_modules/requirejs/require', 'app', 'app/main'],
93 exclude: ['devel', 'amber/core/Platform-Browser'],
94 out: "the.js"
95 }
96 },
97 test_runner: {
98 options: {
99 rawText: {
100 "jquery": "/* do not load in node test runner */",
101 "app/main": mkDefine(["testing", "amber/core/Platform-Node", "amber_devkit/NodeTestRunner"], function (amber) {
102 amber.initialize().then(function () {
103 amber.globals.NodeTestRunner._main();
104 });
105 }),
106 "app": mkDefine(["require"], cbRequireAndPromiseMain)
107 },
108 paths: {"amber_devkit": helpers.libPath},
109 pragmas: {
110 excludeIdeData: true
111 },
112 include: ['app'],
113 findNestedDependencies: true,
114 insertRequire: ['app'],
115 optimize: "none",
116 wrap: helpers.nodeWrapperWithShebang,
117 out: "test_runner.js"
118 }
119 }
120 },
122 exec: {
123 test_runner: 'node test_runner.js'
124 },
126 clean: {
127 test_runner: ['test_runner.js']
128 }
129 });
131 };