This is an automated email from the ASF dual-hosted git repository.
kszucs pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/master by this push:
new 250336b ARROW-4780: [JS] Package sourcemap files, update default
package JS version
250336b is described below
commit 250336b537935ccd8af69f6262b308a2c578bec5
Author: ptaylor <[email protected]>
AuthorDate: Wed Mar 6 12:34:32 2019 +0100
ARROW-4780: [JS] Package sourcemap files, update default package JS version
Change the way we package sourcemaps to make end-consumer builds faster,
bump up the default JS version in the main package (it is now widely supported,
and all the major build tools will down-compile as necessary). Also adds a
"module" entry so we'll be included in
https://www.pikapkg.com/blog/introducing-pika-pack/ search results.
Closes https://issues.apache.org/jira/browse/ARROW-4780
Author: ptaylor <[email protected]>
Closes #3818 from trxcllnt/js/esm-and-sourcemaps and squashes the following
commits:
fc6a8595 <ptaylor> create separate sourcemap files to reduce module file
sizes and boost consumer compilation times
8019d260 <ptaylor> add "module" entry to package.json for packagers like
@pika/web
---
js/gulp/arrow-task.js | 30 ++++++++++++++++--------------
js/gulp/package-task.js | 43 ++++++++++++++++++++++++-------------------
js/gulp/typescript-task.js | 6 +++++-
js/gulpfile.js | 6 +++---
4 files changed, 48 insertions(+), 37 deletions(-)
diff --git a/js/gulp/arrow-task.js b/js/gulp/arrow-task.js
index e119c54..48e717e 100644
--- a/js/gulp/arrow-task.js
+++ b/js/gulp/arrow-task.js
@@ -29,23 +29,25 @@ const { Observable, ReplaySubject } = require('rxjs');
const arrowTask = ((cache) => memoizeTask(cache, function copyMain(target) {
const out = targetDir(target);
- const dtsGlob = `${targetDir(`es2015`, `cjs`)}/**/*.ts`;
- const cjsGlob = `${targetDir(`es2015`, `cjs`)}/**/*.js`;
+ const dtsGlob = `${targetDir(`esnext`, `cjs`)}/**/*.ts`;
+ const cjsGlob = `${targetDir(`esnext`, `cjs`)}/**/*.js`;
const esmGlob = `${targetDir(`esnext`, `esm`)}/**/*.js`;
const es5UmdGlob = `${targetDir(`es5`, `umd`)}/*.js`;
- const es5UmdMaps = `${targetDir(`es5`, `umd`)}/*.map`;
- const es2015UmdGlob = `${targetDir(`es2015`, `umd`)}/*.js`;
- const es2015UmdMaps = `${targetDir(`es2015`, `umd`)}/*.map`;
- const ch_ext = (ext) => gulpRename((p) => { p.extname = ext; });
- const append = (ap) => gulpRename((p) => { p.basename += ap; });
+ const esnextUmdGlob = `${targetDir(`esnext`, `umd`)}/*.js`;
+ const cjsSourceMapsGlob = `${targetDir(`esnext`, `cjs`)}/**/*.map`;
+ const esmSourceMapsGlob = `${targetDir(`esnext`, `esm`)}/**/*.map`;
+ const es5UmdSourceMapsGlob = `${targetDir(`es5`, `umd`)}/*.map`;
+ const esnextUmdSourceMapsGlob = `${targetDir(`esnext`, `umd`)}/*.map`;
return Observable.forkJoin(
- observableFromStreams(gulp.src(dtsGlob), gulp.dest(out)), // copy d.ts
files
- observableFromStreams(gulp.src(cjsGlob), gulp.dest(out)), // copy es2015
cjs files
- observableFromStreams(gulp.src(esmGlob), ch_ext(`.mjs`),
gulp.dest(out)), // copy es2015 esm files and rename to `.mjs`
- observableFromStreams(gulp.src(es5UmdGlob), append(`.es5.min`),
gulp.dest(out)), // copy es5 umd files and add `.min`
- observableFromStreams(gulp.src(es5UmdMaps),
gulp.dest(out)), // copy es5 umd sourcemap files, but don't rename
- observableFromStreams(gulp.src(es2015UmdGlob), append(`.es2015.min`),
gulp.dest(out)), // copy es2015 umd files and add `.es2015.min`
- observableFromStreams(gulp.src(es2015UmdMaps),
gulp.dest(out)), // copy es2015 umd sourcemap files, but don't rename
+ observableFromStreams(gulp.src(dtsGlob),
gulp.dest(out)), // copy d.ts files
+ observableFromStreams(gulp.src(cjsGlob),
gulp.dest(out)), // copy es2015 cjs files
+ observableFromStreams(gulp.src(cjsSourceMapsGlob),
gulp.dest(out)), // copy es2015 cjs sourcemaps
+ observableFromStreams(gulp.src(esmSourceMapsGlob),
gulp.dest(out)), // copy es2015 esm sourcemaps
+ observableFromStreams(gulp.src(es5UmdSourceMapsGlob),
gulp.dest(out)), // copy es5 umd sourcemap files, but don't rename
+ observableFromStreams(gulp.src(esnextUmdSourceMapsGlob),
gulp.dest(out)), // copy es2015 umd sourcemap files, but don't rename
+ observableFromStreams(gulp.src(esmGlob), gulpRename((p) => {
p.extname = '.mjs'; }), gulp.dest(out)), // copy es2015 esm files and
rename to `.mjs`
+ observableFromStreams(gulp.src(es5UmdGlob), gulpRename((p) => {
p.basename += `.es5.min`; }), gulp.dest(out)), // copy es5 umd files and add
`.min`
+ observableFromStreams(gulp.src(esnextUmdGlob), gulpRename((p) => {
p.basename += `.es2015.min`; }), gulp.dest(out)), // copy es2015 umd files and
add `.es2015.min`
).publish(new ReplaySubject()).refCount();
}))({});
diff --git a/js/gulp/package-task.js b/js/gulp/package-task.js
index 2c0c03f..2accc3f 100644
--- a/js/gulp/package-task.js
+++ b/js/gulp/package-task.js
@@ -48,15 +48,17 @@ const createMainPackageJson = (target, format) => (orig) =>
({
name: npmPkgName,
main: `${mainExport}.node`,
browser: `${mainExport}.dom`,
+ module: `${mainExport}.dom.mjs`,
types: `${mainExport}.node.d.ts`,
unpkg: `${mainExport}.es5.min.js`,
jsdelivr: `${mainExport}.es5.min.js`,
- [`esm`]: { mode: `all`, sourceMap: true }
+ esm: { mode: `all`, sourceMap: true }
});
const createTypeScriptPackageJson = (target, format) => (orig) => ({
...createScopedPackageJSON(target, format)(orig),
bin: undefined,
+ module: undefined,
main: `${mainExport}.node.ts`,
types: `${mainExport}.node.ts`,
browser: `${mainExport}.dom.ts`,
@@ -68,23 +70,26 @@ const createTypeScriptPackageJson = (target, format) =>
(orig) => ({
});
const createScopedPackageJSON = (target, format) => (({ name, ...orig }) =>
- conditionallyAddStandardESMEntry(target, format)(
- packageJSONFields.reduce(
- (xs, key) => ({ ...xs, [key]: xs[key] || orig[key] }),
- {
- name: `${npmOrgName}/${packageName(target, format)}`,
- browser: format === 'umd' ? undefined : `${mainExport}.dom`,
- main: format === 'umd' ? `${mainExport}` :
`${mainExport}.node`,
- types: format === 'umd' ? undefined :
`${mainExport}.node.d.ts`,
- version: undefined, unpkg: undefined, jsdelivr: undefined,
- module: undefined, [`esm`]: undefined,
- }
- )
+ packageJSONFields.reduce(
+ (xs, key) => ({ ...xs, [key]: xs[key] || orig[key] }),
+ {
+ // un-set version, since it's automatically applied during the
release process
+ version: undefined,
+ // set the scoped package name (e.g. "@apache-arrow/esnext-esm")
+ name: `${npmOrgName}/${packageName(target, format)}`,
+ // set "unpkg"/"jsdeliver" if building scoped UMD target
+ unpkg: format === 'umd' ? `${mainExport}.js` : undefined,
+ jsdelivr: format === 'umd' ? `${mainExport}.js` : undefined,
+ // set "browser" if building scoped UMD target, otherwise
"Arrow.dom"
+ browser: format === 'umd' ? `${mainExport}.js` :
`${mainExport}.dom.js`,
+ // set "main" to "Arrow" if building scoped UMD target, otherwise
"Arrow.node"
+ main: format === 'umd' ? `${mainExport}.js` :
`${mainExport}.node`,
+ // set "module" (for https://www.npmjs.com/package/@pika/pack) if
building scoped ESM target
+ module: format === 'esm' ? `${mainExport}.dom.js` : undefined,
+ // include "esm" settings for https://www.npmjs.com/package/esm if
building scoped ESM target
+ esm: format === `esm` ? { mode: `auto`, sourceMap: true } :
undefined,
+ // set "types" (for TypeScript/VSCode)
+ types: format === 'umd' ? undefined : `${mainExport}.node.d.ts`,
+ }
)
);
-
-const conditionallyAddStandardESMEntry = (target, format) => (packageJSON) => (
- format !== `esm` && format !== `cls`
- ? packageJSON
- : { ...packageJSON, [`esm`]: { mode: `auto`, sourceMap: true } }
-);
diff --git a/js/gulp/typescript-task.js b/js/gulp/typescript-task.js
index fe694ca..a56de42 100644
--- a/js/gulp/typescript-task.js
+++ b/js/gulp/typescript-task.js
@@ -56,10 +56,14 @@ function compileTypescript(out, tsconfigPath,
tsconfigOverrides) {
tsProject(ts.reporter.defaultReporter())
);
const writeDTypes = observableFromStreams(dts, gulp.dest(out));
- const writeJS = observableFromStreams(js, sourcemaps.write(),
gulp.dest(out));
+ const mapFile = tsProject.options.module === 5 ? esmMapFile : cjsMapFile;
+ const writeJS = observableFromStreams(js, sourcemaps.write('./', { mapFile
}), gulp.dest(out));
return Observable.forkJoin(writeDTypes, writeJS);
}
+function cjsMapFile(mapFilePath) { return mapFilePath; }
+function esmMapFile(mapFilePath) { return mapFilePath.replace('.js.map',
'.mjs.map'); }
+
module.exports = typescriptTask;
module.exports.typescriptTask = typescriptTask;
module.exports.compileBinFiles = compileBinFiles;
diff --git a/js/gulpfile.js b/js/gulpfile.js
index 37c1d18..b6d8662 100644
--- a/js/gulpfile.js
+++ b/js/gulpfile.js
@@ -63,9 +63,9 @@ gulp.task(`build:${npmPkgName}`,
gulp.series(
gulp.parallel(
`build:${taskName(`es5`, `umd`)}`,
- `build:${taskName(`es2015`, `cjs`)}`,
- `build:${taskName(`es2015`, `esm`)}`,
- `build:${taskName(`es2015`, `umd`)}`
+ `build:${taskName(`esnext`, `cjs`)}`,
+ `build:${taskName(`esnext`, `esm`)}`,
+ `build:${taskName(`esnext`, `umd`)}`
),
`clean:${npmPkgName}`,
`compile:${npmPkgName}`,