Skip to content

Commit

Permalink
Use babel and closure without bundler for type checking
Browse files Browse the repository at this point in the history
  • Loading branch information
ahocevar committed Feb 8, 2018
1 parent 9c12b35 commit 2877239
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 18 deletions.
9 changes: 9 additions & 0 deletions .babelrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"plugins": ["jsdoc-closure"],
"parserOpts": {
"parser": "recast"
},
"generatorOpts": {
"generator": "recast"
}
}
8 changes: 7 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,10 @@
"karma": "karma start test/karma.config.js",
"serve-examples": "mkdir -p build/examples && webpack --config examples/webpack/config.js --watch & serve build/examples",
"build-examples": "webpack --config examples/webpack/config.js --env=prod",
"build": "webpack --config config/webpack.js"
"build-index": "node tasks/generate-index.js",
"build": "npm run build-index && webpack --config config/webpack.js",
"src-closure": "babel --out-dir build/src-closure src/",
"typecheck": "npm run build-index && npm run src-closure && node tasks/typecheck"
},
"main": "src/ol/index.js",
"repository": {
Expand All @@ -37,7 +40,9 @@
},
"devDependencies": {
"async": "2.6.0",
"babel-cli": "^6.26.0",
"babel-minify-webpack-plugin": "^0.3.0",
"babel-plugin-jsdoc-closure": "^1.0.2",
"clean-css-cli": "4.1.10",
"copy-webpack-plugin": "^4.0.1",
"coveralls": "3.0.0",
Expand Down Expand Up @@ -67,6 +72,7 @@
"nomnom": "1.8.1",
"pixelmatch": "^4.0.2",
"proj4": "2.4.4",
"recast": "^0.13.0",
"serve": "^6.0.6",
"sinon": "4.2.2",
"url-polyfill": "^1.0.7",
Expand Down
10 changes: 7 additions & 3 deletions tasks/generate-index.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@ function getSymbols(callback) {
});
}

function getPath(name) {
const fullPath = require.resolve(path.resolve('src', name));
return './' + path.posix.relative('src/', fullPath);
}

/**
* Generate a list of symbol names.
Expand All @@ -36,12 +40,12 @@ function addImports(symbols, callback) {
if (defaultExport.length > 1) {
const from = defaultExport[0].replace(/^module\:/, './');
const importName = from.replace(/[.\/]+/g, '$');
const defaultImport = `import ${importName} from '${from}.js';`;
const defaultImport = `import ${importName} from '${getPath(from)}';`;
imports[defaultImport] = true;
} else if (namedExport.length > 1) {
const from = namedExport[0].replace(/^module\:/, './');
const importName = from.replace(/[.\/]+/g, '_');
const namedImport = `import * as ${importName} from '${from}.js';`;
const namedImport = `import * as ${importName} from '${getPath(from)}';`;
imports[namedImport] = true;
}
});
Expand Down Expand Up @@ -135,7 +139,7 @@ function main(callback) {
if (require.main === module) {
async.waterfall([
main,
fs.outputFile.bind(fs, path.join('src', 'index.js'))
fs.outputFile.bind(fs, path.resolve('src', 'index.js'))
], function(err) {
if (err) {
process.stderr.write(err.message + '\n');
Expand Down
19 changes: 5 additions & 14 deletions tasks/build-typecheck.js → tasks/typecheck.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,19 @@ const Compiler = require('google-closure-compiler').compiler;

const compiler = new Compiler({
js: [
'./src/**.js',
'./build/src-closure/**.js',
'./node_modules/pbf/package.json', './node_modules/pbf/**.js', './node_modules/ieee754/**.js',
'./node_modules/pixelworks/package.json', './node_modules/pixelworks/**.js',
'./node_modules/rbush/package.json', './node_modules/rbush/**.js', 'node_modules/quickselect/**.js'
],
entry_point: './src/index.js',
entry_point: './build/src-closure/index.js',
module_resolution: 'NODE',
//FIXME Use compilation_level: 'ADVANCED' after we have switched to path types
compilation_level: 'SIMPLE',
new_type_inf: true,
generate_exports: true,
export_local_property_definitions: true,
output_wrapper: '(function(){%output%})() //# sourceMappingURL=ol.js.map',
js_output_file: 'build/ol.js',
create_source_map: '%outname%.map',
source_map_include_content: true,
//FIXME Turn jscomp_error on for * when we have path types everywhere
dependency_mode: 'STRICT',
process_common_js_modules: true,
checks_only: true,
//FIXME Change newCheckTypes to jscomp_error when we have path types everywhere
jscomp_warning: ['newCheckTypes'],
// Options to make dependencies work
process_common_js_modules: true,
dependency_mode: 'STRICT',
hide_warnings_for: 'node_modules'
});

Expand Down

0 comments on commit 2877239

Please sign in to comment.