Skip to content

Commit 50e7b12

Browse files
committedNov 29, 2019
#42 - Supporting browser and node.js builds using cross-fetch.
1 parent 400f977 commit 50e7b12

7 files changed

+2655
-509
lines changed
 

‎dist/georaster.browser.bundle.js

+2,564
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎dist/georaster.browser.bundle.min.js

+8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎dist/georaster.bundle.js

+56-469
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎dist/georaster.bundle.min.js

+1-8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎package.json

+6-3
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
"version": "0.6.2",
44
"description": "Wrapper around Georeferenced Rasters like GeoTIFF, NetCDF, JPG, and PNG that provides a standard interface",
55
"main": "dist/georaster.bundle.min.js",
6+
"browser": {
7+
"./dist/georaster.bundle.min.js": "./dist/georaster.browser.bundle.min.js"
8+
},
69
"scripts": {
710
"browserify": "browserify src/index.js -o georaster.browserify.js",
811
"eslint": "node ./node_modules/eslint/bin/eslint.js src",
@@ -11,8 +14,8 @@
1114
"test-all": "npm run test-dev && npm run test-prod",
1215
"test-dev": "npm run dev && GEORASTER_TEST_BUNDLE_NAME='georaster.bundle.js' node ./node_modules/.bin/mocha --reporter spec",
1316
"test-prod": "npm run build && GEORASTER_TEST_BUNDLE_NAME='georaster.bundle.min.js' node ./node_modules/.bin/mocha --reporter spec",
14-
"dev": "webpack --mode development",
15-
"build": "webpack --mode production"
17+
"dev": "webpack --mode development --target node && webpack --mode development --target web",
18+
"build": "webpack --mode production --target node && webpack --mode production --target web"
1619
},
1720
"repository": {
1821
"type": "git",
@@ -34,9 +37,9 @@
3437
},
3538
"homepage": "https://github.com/GeoTIFF/georaster#readme",
3639
"dependencies": {
40+
"cross-fetch": "^3.0.4",
3741
"georaster-to-canvas": "0.2.0",
3842
"geotiff": "^1.0.0-beta.6",
39-
"node-fetch": "^2.3.0",
4043
"path": "^0.12.7",
4144
"simple-xml-dom": "^1.0.0",
4245
"underscore": "^1.8.3",

‎src/index.js

+1-10
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,13 @@
22
/* global Blob */
33
/* global URL */
44

5-
import nodeFetch from 'node-fetch';
6-
5+
import fetch from 'cross-fetch';
76
import Worker from './worker.js';
8-
97
import parseData from './parseData.js';
108
import {unflatten} from './utils.js';
11-
129
import {fromUrl, fromUrls} from 'geotiff/src/main.js';
1310
import toCanvas from 'georaster-to-canvas';
1411

15-
const inBrowser = typeof window === 'object';
16-
17-
if (!inBrowser && typeof global === 'object') {
18-
global.fetch = nodeFetch;
19-
}
20-
2112
function urlExists(url) {
2213
try {
2314
return fetch(url, {method: 'HEAD'})

‎webpack.config.js

+19-19
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
const path = require('path');
22

33
module.exports = (env, argv) => {
4-
5-
console.log('mode:', argv.mode)
6-
7-
const { mode } = argv
8-
4+
console.log('mode:', argv.mode);
5+
console.log('target:', argv.target);
6+
const {mode, target} = argv;
7+
const targetFileNamePart = target === 'node' ? '' : '.browser';
98
return {
109
entry: './src/index.js',
1110
mode,
11+
target: target,
1212
output: {
1313
path: path.resolve(__dirname, 'dist'),
14-
filename: mode === 'production' ? 'georaster.bundle.min.js' : 'georaster.bundle.js',
14+
filename: mode === 'production' ? `georaster${targetFileNamePart}.bundle.min.js` : `georaster${targetFileNamePart}.bundle.js`,
1515
globalObject: 'typeof self !== \'undefined\' ? self : this',
1616
library: 'GeoRaster',
17-
libraryTarget: 'umd'
17+
libraryTarget: 'umd',
1818
},
1919
module: {
2020
rules: [
@@ -24,30 +24,30 @@ module.exports = (env, argv) => {
2424
use: {
2525
loader: 'babel-loader',
2626
options: {
27-
presets: ['env']
28-
}
29-
}
27+
presets: ['env'],
28+
},
29+
},
3030
},
3131
{
3232
test: /worker\.js$/,
3333
use: {
3434
loader: 'worker-loader',
3535
options: {
3636
inline: true,
37-
fallback: false
38-
}
37+
fallback: false,
38+
},
3939
},
40-
}
41-
]
40+
},
41+
],
4242
},
4343
node: {
4444
// prevents this error Module not found: Error: Can't resolve 'fs' in '/home/ubuntu/georaster/node_modules/geotiff/dist'
45-
fs: "empty"
45+
fs: 'empty',
4646
},
4747
externals: {
4848
// we do this so we can manually polyfill fetch as a global variable,
4949
// activating geotiff.js' makeFetchSource function when using fromUrl
50-
"node-fetch": "node-fetch"
51-
}
52-
}
53-
}
50+
'node-fetch': 'node-fetch',
51+
},
52+
};
53+
};

0 commit comments

Comments
 (0)
Please sign in to comment.