diff --git a/.eslintignore b/.eslintignore index edb51380de..d6f9d6349f 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,2 +1,3 @@ examples/Jugl.js examples/resources/ +build/package/**/*webgl* diff --git a/Makefile b/Makefile index 1c062ec7ab..885bc16d8d 100644 --- a/Makefile +++ b/Makefile @@ -310,3 +310,4 @@ package: @rm build/package/typedefs.js @cp css/ol.css build/package ./node_modules/.bin/jscodeshift --transform transforms/module.js build/package + npm run lint-package diff --git a/package.json b/package.json index 86a984df05..12d6b94db4 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "postinstall": "closure-util update", "start": "node tasks/serve.js", "pretest": "eslint tasks test test_rendering src examples", + "lint-package": "eslint --fix build/package", "test": "node tasks/test.js", "debug-server": "node tasks/serve-lib.js" }, diff --git a/package/.eslintrc b/package/.eslintrc new file mode 100644 index 0000000000..bd14a19ef2 --- /dev/null +++ b/package/.eslintrc @@ -0,0 +1,5 @@ +{ + "parserOptions": { + "sourceType": "module" + } +} diff --git a/transforms/module.js b/transforms/module.js index 8a81705f1b..7482a6ca3e 100644 --- a/transforms/module.js +++ b/transforms/module.js @@ -1,5 +1,5 @@ -const pkg = require('../package.json'); -const version = require('../package/package.json').version; +const parentPackage = require('../package.json'); +const thisPackage = require('../package/package.json'); const defines = { 'ol.ENABLE_WEBGL': false @@ -17,14 +17,18 @@ function resolve(fromName, toName) { let name = toParts[2]; let packageName; let imported; - for (let i = 0, ii = pkg.ext.length; i < ii; ++i) { - const dependency = pkg.ext[i]; + for (let i = 0, ii = parentPackage.ext.length; i < ii; ++i) { + const dependency = parentPackage.ext[i]; imported = dependency.import; - if (dependency.module === name) { - packageName = name; - break; - } else if (dependency.name === name) { + if (dependency.module === name || dependency.name === name) { packageName = dependency.module; + // ensure dependency is listed on both package.json + if ( + !thisPackage.dependencies[packageName] || + thisPackage.dependencies[packageName] !== parentPackage.dependencies[packageName] + ) { + throw new Error(`Package ${packageName} must appear in all package.json at the same version`); + } break; } } @@ -128,7 +132,7 @@ module.exports = function(info, api) { // replace `ol.VERSION = ''` with correct version root.find(j.ExpressionStatement, getMemberExpressionAssignment('ol.VERSION')) .forEach(path => { - path.value.expression.right = j.literal(version); + path.value.expression.right = j.literal(thisPackage.version); }); const replacements = {};