1 |
|
2 | (function() {
|
3 | var runner;
|
4 |
|
5 | runner = function() {
|
6 | var debug, exclusions, exts, livereload, opts, path, pjson, port, resolve, server, usePolling, version, wait;
|
7 | pjson = require('../package.json');
|
8 | version = pjson.version;
|
9 | livereload = require('./livereload');
|
10 | resolve = require('path').resolve;
|
11 | opts = require('opts');
|
12 | debug = false;
|
13 | opts.parse([
|
14 | {
|
15 | short: "v",
|
16 | long: "version",
|
17 | description: "Show the version",
|
18 | required: false,
|
19 | callback: function() {
|
20 | console.log(version);
|
21 | return process.exit(1);
|
22 | }
|
23 | }, {
|
24 | short: "p",
|
25 | long: "port",
|
26 | description: "Specify the port",
|
27 | value: true,
|
28 | required: false
|
29 | }, {
|
30 | short: "x",
|
31 | long: "exclusions",
|
32 | description: "Exclude files by specifying an array of regular expressions. Will be appended to default value which is [/\\.git\//, /\\.svn\//, /\\.hg\//]",
|
33 | required: false,
|
34 | value: true
|
35 | }, {
|
36 | short: "d",
|
37 | long: "debug",
|
38 | description: "Additional debugging information",
|
39 | required: false,
|
40 | callback: function() {
|
41 | return debug = true;
|
42 | }
|
43 | }, {
|
44 | short: "e",
|
45 | long: "exts",
|
46 | description: "An array of extensions you want to observe. An example 'jade scss' (quotes are required). In addition to the defaults (html, css, js, png, gif, jpg, php, php5, py, rb, erb, and \"coffee.\").",
|
47 | required: false,
|
48 | value: true
|
49 | }, {
|
50 | short: "u",
|
51 | long: "usepolling",
|
52 | description: "Poll for file system changes. Set this to true to successfully watch files over a network.",
|
53 | required: false,
|
54 | value: true
|
55 | }, {
|
56 | short: "w",
|
57 | long: "wait",
|
58 | description: "delay message of file system changes to browser by `delay` milliseconds",
|
59 | required: false,
|
60 | value: true
|
61 | }
|
62 | ].reverse(), true);
|
63 | port = opts.get('port') || 35729;
|
64 | exclusions = opts.get('exclusions') ? opts.get('exclusions').split(',').map(function(s) {
|
65 | return new RegExp(s);
|
66 | }) : [];
|
67 | exts = (opts.get('exts') || '').split(' ');
|
68 | usePolling = opts.get('usepolling') || false;
|
69 | wait = opts.get('wait') || 0;
|
70 | server = livereload.createServer({
|
71 | port: port,
|
72 | debug: debug,
|
73 | exclusions: exclusions,
|
74 | exts: exts,
|
75 | usePolling: usePolling,
|
76 | delay: wait
|
77 | });
|
78 | path = (process.argv[2] || '.').split(/\s*,\s*/).map(function(x) {
|
79 | return resolve(x);
|
80 | });
|
81 | console.log("Starting LiveReload v" + version + " for " + path + " on port " + port + ".");
|
82 | return server.watch(path);
|
83 | };
|
84 |
|
85 | module.exports = {
|
86 | run: runner
|
87 | };
|
88 |
|
89 | }).call(this);
|