From 6de3b64a21899ca09641df3dd84ee528ba7ee178 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Thu, 6 Sep 2018 01:12:58 +0200 Subject: [PATCH] update the build toolchain --- .eslintrc.json | 15 +++++++++++++++ .gitignore | 4 ++-- .npmignore | 2 +- index.js | 23 ----------------------- package.json | 33 +++++++++++++++++---------------- rollup.config.js | 47 ++++++++++++++++++++++++++++++++--------------- src/index.js | 14 ++++++++++++++ 7 files changed, 81 insertions(+), 57 deletions(-) create mode 100644 .eslintrc.json delete mode 100644 index.js create mode 100644 src/index.js diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..70792b6 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,15 @@ +{ + "extends": "eslint:recommended", + "parserOptions": { + "sourceType": "module", + "ecmaVersion": 8 + }, + "env": { + "es6": true + }, + "rules": { + "no-cond-assign": 0, + "no-constant-condition": 0, + "no-floating-decimal": 2 + } +} diff --git a/.gitignore b/.gitignore index 30c7707..e038869 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ *.sublime-workspace .DS_Store -build/ +dist/ +test/output/ node_modules npm-debug.log -package-lock.json diff --git a/.npmignore b/.npmignore index dfb770e..dc3fb70 100644 --- a/.npmignore +++ b/.npmignore @@ -1,3 +1,3 @@ *.sublime-* -build/*.zip +dist/*.zip test/ diff --git a/index.js b/index.js deleted file mode 100644 index b5cf250..0000000 --- a/index.js +++ /dev/null @@ -1,23 +0,0 @@ -export {default as geoClipPolygon} from "./src/clip/polygon"; -export {default as geoPolyhedral} from "./src/polyhedral/index"; -export {default as geoPolyhedralButterfly} from "./src/polyhedral/butterfly"; -export {default as geoPolyhedralCollignon} from "./src/polyhedral/collignon"; -export {default as geoPolyhedralWaterman} from "./src/polyhedral/waterman"; -export {default as geoPolyhedralVoronoi} from "./src/polyhedral/voronoi"; -export {default as geoDodecahedral} from "./src/polyhedral/dodecahedral"; -export {default as geoCox, coxRaw as geoCoxRaw} from "./src/cox.js"; -export {default as geoTetrahedralLee, leeRaw as geoLeeRaw} from "./src/tetrahedralLee.js"; -export {default as geoGrayFullerRaw} from "./src/grayfuller"; -export {default as geoAirocean} from "./src/airocean"; -export {default as geoIcosahedral} from "./src/icosahedral"; -export {default as geoCubic} from "./src/cubic"; -export {default as geoCahillKeyes, cahillKeyesRaw as geoCahillKeyesRaw} from "./src/cahillKeyes"; - -// if necessary, the following line could export a copy of the d3-geo-projection versions under the names xxxxUnclipped -// export {geoPolyhedral as geoPolyhedralUnclipped, geoPolyhedralButterfly as geoPolyhedralButterflyUnclipped, geoPolyhedralCollignon as geoPolyhedralCollignonUnclipped, geoPolyhedralWaterman as geoPolyhedralWatermanUnclipped} from "./node_modules/d3-geo-projection/index"; - -// if necessary, the following line could export a copy of these versions under the names xxxxClipped -// export {default as geoPolyhedral, default as geoPolyhedralClipped} from "./src/polyhedral/index"; -// export {default as geoPolyhedralButterfly, default as geoPolyhedralButterflyClipped} from "./src/polyhedral/butterfly.js"; -// export {default as geoPolyhedralCollignon, default as geoPolyhedralCollignonClipped} from "./src/polyhedral/collignon.js"; -// export {default as geoPolyhedralWaterman, default as geoPolyhedralWatermanClipped} from "./src/polyhedral/waterman.js"; diff --git a/package.json b/package.json index 2f7dd79..0ff2293 100644 --- a/package.json +++ b/package.json @@ -1,11 +1,12 @@ { "name": "d3-geo-polygon", - "version": "1.4.2", + "version": "1.5.0", "description": "Clipping and geometric operations for spherical polygons.", "keywords": [ "d3", "d3-module", - "geo", + "cartography", + "projection", "polygon" ], "homepage": "https://github.com/d3/d3-geo-polygon", @@ -24,30 +25,30 @@ "url": "https://visionscarto.net" } ], - "main": "build/d3-geo-polygon.js", - "unpkg": "build/d3-geo-polygon.min.js", - "jsdelivr": "build/d3-geo-polygon.min.js", - "module": "index", + "main": "dist/d3-geo-polygon.js", + "unpkg": "dist/d3-geo-polygon.min.js", + "jsdelivr": "dist/d3-geo-polygon.min.js", + "module": "src/index.js", "repository": { "type": "git", "url": "https://github.com/d3/d3-geo-polygon.git" }, "scripts": { - "pretest": "rm -rf build && mkdir build && rollup -c --banner \"$(preamble)\"", - "test": "tape 'test/**/*-test.js' && eslint index.js src", - "prepublishOnly": "npm run test && mkdir -p test/output && test/compare-images && uglifyjs -b beautify=false,preamble=\"'$(preamble)'\" build/d3-geo-polygon.js -c -m -o build/d3-geo-polygon.min.js", - "postpublish": "git push && git push --tags && zip -j build/d3-geo-polygon.zip -- LICENSE README.md build/d3-geo-polygon.js build/d3-geo-polygon.min.js" + "pretest": "rollup -c", + "test": "tape 'test/**/*-test.js' && eslint src", + "prepublishOnly": "rm -rf dist && yarn test && mkdir -p test/output && test/compare-images", + "postpublish": "git push && git push --tags && zip -j dist/d3-geo-polygon.zip -- LICENSE README.md dist/d3-geo-polygon.js dist/d3-geo-polygon.min.js" }, "dependencies": { "d3-array": "1", + "d3-geo": "^1.11.1", "d3-geo-projection": "2" }, "devDependencies": { - "d3-geo": "^1.10", - "eslint": "4", - "package-preamble": "0.1", - "rollup": "0.50", - "tape": "4", - "uglify-js": "3" + "canvas": "1", + "eslint": "5", + "rollup": "0.64", + "rollup-plugin-terser": "1", + "tape": "4" } } diff --git a/rollup.config.js b/rollup.config.js index 29d5b6f..804bba8 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,19 +1,36 @@ -export default { - input: "index", - external: [ - "d3-array", - "d3-geo", - "d3-geo-projection" - ], +import {terser} from "rollup-plugin-terser"; +import * as meta from "./package.json"; + +const config = { + input: "src/index.js", + external: Object.keys(meta.dependencies || {}).filter(key => /^d3-/.test(key)), output: { - extend: true, - file: "build/d3-geo-polygon.js", + file: `dist/${meta.name}.js`, + name: "d3", format: "umd", - globals: { - "d3-array": "d3", - "d3-geo": "d3", - "d3-geo-projection": "d3" + indent: false, + extend: true, + banner: `// ${meta.homepage} v${meta.version} Copyright ${(new Date).getFullYear()} ${meta.author.name}`, + globals: Object.assign({}, ...Object.keys(meta.dependencies || {}).filter(key => /^d3-/.test(key)).map(key => ({[key]: "d3"}))) + }, + plugins: [] +}; + +export default [ + config, + { + ...config, + output: { + ...config.output, + file: `dist/${meta.name}.min.js` }, - name: "d3" + plugins: [ + ...config.plugins, + terser({ + output: { + preamble: config.output.banner + } + }) + ] } -}; +]; diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000..5ef6aa6 --- /dev/null +++ b/src/index.js @@ -0,0 +1,14 @@ +export {default as geoClipPolygon} from "./clip/polygon"; +export {default as geoPolyhedral} from "./polyhedral/index"; +export {default as geoPolyhedralButterfly} from "./polyhedral/butterfly"; +export {default as geoPolyhedralCollignon} from "./polyhedral/collignon"; +export {default as geoPolyhedralWaterman} from "./polyhedral/waterman"; +export {default as geoPolyhedralVoronoi} from "./polyhedral/voronoi"; +export {default as geoDodecahedral} from "./polyhedral/dodecahedral"; +export {default as geoCox, coxRaw as geoCoxRaw} from "./cox.js"; +export {default as geoTetrahedralLee, leeRaw as geoLeeRaw} from "./tetrahedralLee.js"; +export {default as geoGrayFullerRaw} from "./grayfuller"; +export {default as geoAirocean} from "./airocean"; +export {default as geoIcosahedral} from "./icosahedral"; +export {default as geoCubic} from "./cubic"; +export {default as geoCahillKeyes, cahillKeyesRaw as geoCahillKeyesRaw} from "./cahillKeyes";