Commit 374b9868 authored by Calvin Metcalf's avatar Calvin Metcalf
Browse files

build process

parent 108259b2
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -2,3 +2,5 @@
node_modules
.c9revisions
coverage
projs.js
.DS_STORE
 No newline at end of file
+54 −2
Original line number Diff line number Diff line
var projs = [
  'tmerc',
  'utm',
  'sterea',
  'stere',
  'somerc',
  'omerc',
  'lcc',
  'krovak',
  'cass',
  'laea',
  'aea',
  'gnom',
  'cea',
  'eqc',
  'poly',
  'nzmg',
  'mill',
  'sinu',
  'moll',
  'eqdc',
  'vandg',
  'aeqd'
];
module.exports = function(grunt) {
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
@@ -31,7 +55,10 @@ module.exports = function(grunt) {
          'dist/proj4-src.js': ['lib/index.js'],
        },
        options: {
          standalone: 'proj4'
          standalone: 'proj4',
          alias: [
            './projs:./includedProjections'
            ]
        }
      }
    },
@@ -56,5 +83,30 @@ module.exports = function(grunt) {
  grunt.registerTask('version', function() {
    grunt.file.write('./lib/version.js', "module.exports = '" + grunt.file.readJSON('package.json').version + "';");
  });
  grunt.registerTask('default', ['version', 'jshint', 'browserify', 'uglify', 'connect','mocha_phantomjs']);
  grunt.registerTask('custom',function(){
    grunt.task.run('browserify', 'uglify');
    var projections = this.args;
    if(projections[0]==='default'){
      grunt.file.write('./projs.js','module.exports = function(){}');
      return;
    }
    if(projections[0]==='all'){
      projections = projs;
    }
    grunt.file.write('./projs.js',[
      "var projs = [",
      " require('./lib/projections/"+projections.join("'),\n\trequire('./lib/projections/")+"')",
      "];",
      "module.exports = function(proj4){",
      " projs.forEach(function(proj){",
      "   proj4.Proj.projections.add(proj);",
      " });",
      "}"
    ].join("\n"));
  });
  grunt.registerTask('build',function(){
    var args = this.args.length?this.args[0].split(','):['default'];
    grunt.task.run('version', 'jshint', 'custom:'+args.join(':'));
  });
  grunt.registerTask('default', ['build:all', 'connect','mocha_phantomjs']);
};
+32 −3
Original line number Diff line number Diff line
@@ -67,10 +67,39 @@ proj4(firstProjection).inverse([242075.00535055372, 750123.32090043]);


##Developing
to set up build tools make sure you have node installed and run `npm install`
to set up build tools make sure you have node and grunt-cli installed and then run `npm install`

to build run `grunt` if that doesn't work try:
to do the complete build and browser tests run

```bash
npm install -g grunt-cli #you may need a sudo in front of that
grunt
```

to run node tests run

```bash
npm test
```

to run node tests with coverage run

```bash
node test --coverage
```

to create a build with only default projections (latlon and Mercator) run 

```bash
grunt build
```

to create a build with only custom projections include a comma separated list of projections codes (the file name in 'lib/projections' without the '.js') after a colon, e.g.

```bash
grunt build:tmerc
#includes transverse Mercator
grunt build:lcc
#includes lambert conformal conic
grunt build:omerc,moll
#includes oblique Mercator and Mollweide
```
+1 −1
Original line number Diff line number Diff line
@@ -5,7 +5,7 @@ constants.grids = require('./constants/grids');
constants.Datum = require('./constants/Datum');
constants.Ellipsoid = require('./constants/Ellipsoid');
var datum = require('./datum');
var projections = require('./projections/index');
var projections = require('./projections');
var wkt = require('./wkt');
var projStr = require('./projString');
var EPSLN = 1.0e-10;
+29 −0
Original line number Diff line number Diff line
var projs = [
  require('./projections/tmerc'),
  require('./projections/utm'),
  require('./projections/sterea'),
  require('./projections/stere'),
  require('./projections/somerc'),
  require('./projections/omerc'),
  require('./projections/lcc'),
  require('./projections/krovak'),
  require('./projections/cass'),
  require('./projections/laea'),
  require('./projections/aea'),
  require('./projections/gnom'),
  require('./projections/cea'),
  require('./projections/eqc'),
  require('./projections/poly'),
  require('./projections/nzmg'),
  require('./projections/mill'),
  require('./projections/sinu'),
  require('./projections/moll'),
  require('./projections/eqdc'),
  require('./projections/vandg'),
  require('./projections/aeqd')
];
module.exports = function(proj4){
  projs.forEach(function(proj){
    proj4.Proj.projections.add(proj);
  });
};
 No newline at end of file
Loading