Skip to content

Commit

Permalink
Strip extension from reexport of rollup-app-reexports
Browse files Browse the repository at this point in the history
This makes `rollup-app-reexports` strip file extensions (`.js`) from reexports, aligning with (the blueprint of) v1 addons, and allowing better interoperability with `package.json#exports` with path mappings including extensions, as discussed in typed-ember/glint#338.
  • Loading branch information
simonihmig committed Jun 3, 2022
1 parent aec11b7 commit 96d92fa
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 8 deletions.
6 changes: 5 additions & 1 deletion packages/addon-dev/src/rollup-app-reexports.ts
@@ -1,4 +1,5 @@
import { readJsonSync, writeJsonSync } from 'fs-extra';
import { extname } from 'path';
import minimatch from 'minimatch';
import type { Plugin } from 'rollup';

Expand All @@ -24,7 +25,10 @@ export default function appReexports(opts: {
this.emitFile({
type: 'asset',
fileName: `_app_/${appFilename}`,
source: `export { default } from "${pkg.name}/${addonFilename}";\n`,
source: `export { default } from "${pkg.name}/${addonFilename.slice(
0,
-extname(addonFilename).length
)}";\n`,
});
}
}
Expand Down
28 changes: 21 additions & 7 deletions tests/scenarios/v2-addon-dev-test.ts
Expand Up @@ -3,7 +3,7 @@ import { appScenarios, baseV2Addon } from './scenarios';
import { PreparedApp } from 'scenario-tester';
import QUnit from 'qunit';
import merge from 'lodash/merge';
import { pathExistsSync, readJsonSync } from 'fs-extra';
import { pathExistsSync, readJsonSync, readFileSync } from 'fs-extra';

const { module: Qmodule, test } = QUnit;

Expand Down Expand Up @@ -202,12 +202,26 @@ appScenarios

test('the addon was built successfully', async function (assert) {
let { dir } = inDependency(app, 'v2-addon');
let files: string[] = Object.values(readJsonSync(path.join(dir, 'package.json'))['ember-addon']['app-js']);

assert.expect(files.length);

for (let pathName of files) {
assert.deepEqual(pathExistsSync(path.join(dir, pathName)), true, `pathExists: ${pathName}`);
let expectedModules = {
'./dist/_app_/components/demo/index.js': 'export { default } from "v2-addon/components/demo/index";\n',
'./dist/_app_/components/demo/out.js': 'export { default } from "v2-addon/components/demo/out";\n',
'./dist/_app_/components/demo/namespace/namespace-me.js':
'export { default } from "v2-addon/components/demo/namespace-me";\n',
};

assert.strictEqual(
Object.keys(readJsonSync(path.join(dir, 'package.json'))['ember-addon']['app-js']).length,
Object.keys(expectedModules).length
);

for (let [pathName, moduleContents] of Object.entries(expectedModules)) {
let filePath = path.join(dir, pathName);
assert.deepEqual(pathExistsSync(filePath), true, `pathExists: ${pathName}`);
assert.strictEqual(
readFileSync(filePath, { encoding: 'utf8' }),
moduleContents,
`has correct reexport: ${pathName}`
);
}
});
});
Expand Down

0 comments on commit 96d92fa

Please sign in to comment.