Skip to content

Commit 93bdbf1

Browse files
domoritztrxcllnt
andcommitted
ARROW-13303: [JS] Revise bundles
Closes apache#10698 from domoritz/dom/bundles-2 Lead-authored-by: Dominik Moritz <domoritz@gmail.com> Co-authored-by: ptaylor <paul.e.taylor@me.com> Signed-off-by: Dominik Moritz <domoritz@gmail.com>
1 parent a4222a0 commit 93bdbf1

24 files changed

Lines changed: 54 additions & 41 deletions

js/gulp/arrow-task.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,24 +35,24 @@ const pipeline = require('util').promisify(require('stream').pipeline);
3535

3636
const arrowTask = ((cache) => memoizeTask(cache, function copyMain(target) {
3737
const out = targetDir(target);
38-
const dtsGlob = `${targetDir(`esnext`, `cjs`)}/**/*.ts`;
39-
const cjsGlob = `${targetDir(`esnext`, `cjs`)}/**/*.js`;
40-
const esmGlob = `${targetDir(`esnext`, `esm`)}/**/*.js`;
38+
const dtsGlob = `${targetDir(`es2015`, `cjs`)}/**/*.ts`;
39+
const cjsGlob = `${targetDir(`es2015`, `cjs`)}/**/*.js`;
40+
const esmGlob = `${targetDir(`es2015`, `esm`)}/**/*.js`;
4141
const es2015UmdGlob = `${targetDir(`es2015`, `umd`)}/*.js`;
4242
const esnextUmdGlob = `${targetDir(`esnext`, `umd`)}/*.js`;
43-
const cjsSourceMapsGlob = `${targetDir(`esnext`, `cjs`)}/**/*.map`;
44-
const esmSourceMapsGlob = `${targetDir(`esnext`, `esm`)}/**/*.map`;
43+
const cjsSourceMapsGlob = `${targetDir(`es2015`, `cjs`)}/**/*.map`;
44+
const esmSourceMapsGlob = `${targetDir(`es2015`, `esm`)}/**/*.map`;
4545
const es2015UmdSourceMapsGlob = `${targetDir(`es2015`, `umd`)}/*.map`;
4646
const esnextUmdSourceMapsGlob = `${targetDir(`esnext`, `umd`)}/*.map`;
4747
return ObservableForkJoin(
4848
observableFromStreams(gulp.src(dtsGlob), gulp.dest(out)), // copy d.ts files
49-
observableFromStreams(gulp.src(cjsGlob), gulp.dest(out)), // copy esnext cjs files
50-
observableFromStreams(gulp.src(cjsSourceMapsGlob), gulp.dest(out)), // copy esnext cjs sourcemaps
51-
observableFromStreams(gulp.src(esmSourceMapsGlob), gulp.dest(out)), // copy esnext esm sourcemaps
49+
observableFromStreams(gulp.src(cjsGlob), gulp.dest(out)), // copy es2015 cjs files
50+
observableFromStreams(gulp.src(cjsSourceMapsGlob), gulp.dest(out)), // copy es2015 cjs sourcemaps
51+
observableFromStreams(gulp.src(esmSourceMapsGlob), gulp.dest(out)), // copy es2015 esm sourcemaps
5252
observableFromStreams(gulp.src(es2015UmdSourceMapsGlob), gulp.dest(out)), // copy es2015 umd sourcemap files, but don't rename
5353
observableFromStreams(gulp.src(esnextUmdSourceMapsGlob), gulp.dest(out)), // copy esnext umd sourcemap files, but don't rename
54-
observableFromStreams(gulp.src(esmGlob), gulpRename((p) => { p.extname = '.mjs'; }), gulp.dest(out)), // copy esnext esm files and rename to `.mjs`
55-
observableFromStreams(gulp.src(es2015UmdGlob), gulpRename((p) => { p.basename += `.es2015.min`; }), gulp.dest(out)), // copy es2015 umd files and add `.min`
54+
observableFromStreams(gulp.src(esmGlob), gulpRename((p) => { p.extname = '.mjs'; }), gulp.dest(out)), // copy es2015 esm files and rename to `.mjs`
55+
observableFromStreams(gulp.src(es2015UmdGlob), gulpRename((p) => { p.basename += `.es2015.min`; }), gulp.dest(out)), // copy es2015 umd files and add `.es2015.min`
5656
observableFromStreams(gulp.src(esnextUmdGlob), gulpRename((p) => { p.basename += `.esnext.min`; }), gulp.dest(out)), // copy esnext umd files and add `.esnext.min`
5757
).pipe(share({ connector: () => new ReplaySubject(), resetOnError: false, resetOnComplete: false, resetOnRefCountZero: false }));
5858
}))({});

js/gulp/package-task.js

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,23 +53,34 @@ const createMainPackageJson = (target, format) => (orig) => ({
5353
...createTypeScriptPackageJson(target, format)(orig),
5454
bin: orig.bin,
5555
name: npmPkgName,
56-
main: `${mainExport}.node`,
57-
browser: `${mainExport}.dom`,
58-
module: `${mainExport}.dom.mjs`,
56+
type: 'commonjs',
57+
main: `${mainExport}.node.js`,
58+
module: `${mainExport}.node.mjs`,
59+
browser: {
60+
[`${mainExport}.node.js`]: `${mainExport}.dom.js`,
61+
[`${mainExport}.node.mjs`]: `${mainExport}.dom.mjs`
62+
},
63+
exports: {
64+
import: `./${mainExport}.node.mjs`,
65+
require: `./${mainExport}.node.js`,
66+
},
5967
types: `${mainExport}.node.d.ts`,
6068
unpkg: `${mainExport}.es2015.min.js`,
6169
jsdelivr: `${mainExport}.es2015.min.js`,
6270
sideEffects: false,
63-
esm: { mode: `all`, sourceMap: true },
71+
esm: { mode: `all`, sourceMap: true }
6472
});
6573

6674
const createTypeScriptPackageJson = (target, format) => (orig) => ({
6775
...createScopedPackageJSON(target, format)(orig),
6876
bin: undefined,
69-
module: undefined,
7077
main: `${mainExport}.node.ts`,
78+
module: `${mainExport}.node.ts`,
7179
types: `${mainExport}.node.ts`,
7280
browser: `${mainExport}.dom.ts`,
81+
type: "module",
82+
sideEffects: false,
83+
esm: { mode: `auto`, sourceMap: true },
7384
dependencies: {
7485
'@types/flatbuffers': '*',
7586
'@types/node': '*',
@@ -91,11 +102,11 @@ const createScopedPackageJSON = (target, format) => (({ name, ...orig }) =>
91102
// set "browser" if building scoped UMD target, otherwise "Arrow.dom"
92103
browser: format === 'umd' ? `${mainExport}.js` : `${mainExport}.dom.js`,
93104
// set "main" to "Arrow" if building scoped UMD target, otherwise "Arrow.node"
94-
main: format === 'umd' ? `${mainExport}.js` : `${mainExport}.node`,
105+
main: format === 'umd' ? `${mainExport}.js` : `${mainExport}.node.js`,
95106
// set "type" to `module` or `commonjs` (https://nodejs.org/api/packages.html#packages_type)
96107
type: format === 'esm' ? `module` : `commonjs`,
97-
// set "module" (for https://www.npmjs.com/package/@pika/pack) if building scoped ESM target
98-
module: format === 'esm' ? `${mainExport}.dom.js` : undefined,
108+
// set "module" if building scoped ESM target
109+
module: format === 'esm' ? `${mainExport}.node.js` : undefined,
99110
// set "sideEffects" to false as a hint to Webpack that it's safe to tree-shake the ESM target
100111
sideEffects: format === 'esm' ? false : undefined,
101112
// include "esm" settings for https://www.npmjs.com/package/esm if building scoped ESM target

js/gulp/test-task.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ const readFile = promisify(require('fs').readFile);
2828
const asyncDone = promisify(require('async-done'));
2929
const exec = promisify(require('child_process').exec);
3030
const parseXML = promisify(require('xml2js').parseString);
31-
const { targetAndModuleCombinations } = require('./util');
31+
const { targetAndModuleCombinations, npmPkgName } = require('./util');
3232

3333
const jestArgv = [`--reporters=jest-silent-reporter`];
3434

@@ -53,7 +53,7 @@ const testOptions = {
5353
const testTask = ((cache, execArgv, testOptions) => memoizeTask(cache, function test(target, format) {
5454
const opts = { ...testOptions };
5555
const args = [...execArgv];
56-
if (format === 'esm' || target === 'ts' || target === 'src') {
56+
if (format === 'esm' || target === 'ts' || target === 'src' || target === npmPkgName) {
5757
args.unshift(`--experimental-vm-modules`);
5858
}
5959
if (argv.coverage) {

js/gulpfile.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,15 +60,15 @@ knownTargets.forEach((target) => {
6060
));
6161
});
6262

63-
// The main "apache-arrow" module builds the es2015/umd, esnext/cjs,
64-
// esnext/esm, and esnext/umd targets, then copies and renames the
63+
// The main "apache-arrow" module builds the es2015/umd, es2015/cjs,
64+
// es2015/esm, and esnext/umd targets, then copies and renames the
6565
// compiled output into the apache-arrow folder
6666
gulp.task(`build:${npmPkgName}`,
6767
gulp.series(
6868
gulp.parallel(
6969
`build:${taskName(`es2015`, `umd`)}`,
70-
`build:${taskName(`esnext`, `cjs`)}`,
71-
`build:${taskName(`esnext`, `esm`)}`,
70+
`build:${taskName(`es2015`, `cjs`)}`,
71+
`build:${taskName(`es2015`, `esm`)}`,
7272
`build:${taskName(`esnext`, `umd`)}`
7373
),
7474
`clean:${npmPkgName}`,

js/jest.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ module.exports = {
2828
rootDir: ".",
2929
roots: ["<rootDir>/test/"],
3030
preset: "ts-jest/presets/default-esm",
31-
moduleFileExtensions: ["js", "ts"],
31+
moduleFileExtensions: ["mjs", "js", "ts"],
3232
coverageReporters: ["lcov", "json"],
3333
coveragePathIgnorePatterns: [
3434
"fb\\/(File|Message|Schema|Tensor)\\.(js|ts)$",

js/jestconfigs/jest.apache-arrow.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ module.exports = {
1919
...require("../jest.config"),
2020
rootDir: "../",
2121
preset: "ts-jest",
22+
moduleFileExtensions: ["js", "ts"],
2223
globals: {
2324
"ts-jest": {
2425
diagnostics: false,

js/jestconfigs/jest.es2015.cjs.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ module.exports = {
1919
...require("../jest.config"),
2020
rootDir: "../",
2121
preset: "ts-jest",
22+
moduleFileExtensions: ["js", "ts"],
2223
globals: {
2324
"ts-jest": {
2425
diagnostics: false,

js/jestconfigs/jest.es2015.esm.config.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ module.exports = {
2727
},
2828
moduleNameMapper: {
2929
"^apache-arrow(.*)": "<rootDir>/targets/es2015/esm$1",
30-
tslib: "tslib/tslib.es6.js",
31-
flatbuffers: "flatbuffers/js/flatbuffers.mjs",
30+
tslib: "tslib/tslib.es6.js"
3231
},
3332
};

js/jestconfigs/jest.es2015.umd.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ module.exports = {
1919
...require("../jest.config"),
2020
rootDir: "../",
2121
preset: "ts-jest",
22+
moduleFileExtensions: ["js", "ts"],
2223
globals: {
2324
"ts-jest": {
2425
diagnostics: false,

js/jestconfigs/jest.es5.cjs.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ module.exports = {
1919
...require("../jest.config"),
2020
rootDir: "../",
2121
preset: "ts-jest",
22+
moduleFileExtensions: ["js", "ts"],
2223
globals: {
2324
"ts-jest": {
2425
diagnostics: false,

0 commit comments

Comments
 (0)