Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(js): update generated .swcrc file to align with @swc/core@1.3.85 #19214

Merged
merged 2 commits into from
Sep 22, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 1 addition & 2 deletions e2e/js/src/js-executor-node.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,7 @@ describe('js:node executor', () => {
expect(output).toContain('This is an error');
}, 240_000);

// TODO: Re-enable this when it is passing
xit('should execute library compiled with rollup', async () => {
it('should execute library compiled with rollup', async () => {
const rollupLib = uniq('rolluplib');

runCLI(
Expand Down
14 changes: 3 additions & 11 deletions e2e/js/src/js-executor-swc.test.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
import { satisfies } from 'semver';
import { execSync } from 'child_process';
import {
checkFilesDoNotExist,
checkFilesExist,
cleanupProject,
detectPackageManager,
newProject,
packageManagerLockFile,
readJson,
runCLI,
runCLIAsync,
tmpProjPath,
uniq,
updateFile,
Expand Down Expand Up @@ -65,14 +62,9 @@ describe('js:swc executor', () => {
packageManagerLockFile[detectPackageManager(tmpProjPath())]
}`
);
expect(
satisfies(
readJson(`dist/libs/${lib}/package.json`).peerDependencies[
'@swc/helpers'
],
readJson(`package.json`).dependencies['@swc/helpers']
)
).toBeTruthy();
expect(readJson(`dist/libs/${lib}/package.json`)).toHaveProperty(
'peerDependencies.@swc/helpers'
);

// Legacy behavior (updateBuildableProjectDepsInPackageJson): don't add @swc/helpers if externalHelpers is false
// TODO(v17): Remove this test
Expand Down
6 changes: 2 additions & 4 deletions e2e/js/src/js-packaging.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,7 @@ describe('packaging libs', () => {

afterEach(() => cleanupProject());

// TODO Re-enable this when it is passing
xit('should bundle libs using esbuild, vite, rollup and be used in CJS/ESM projects', () => {
it('should bundle libs using esbuild, vite, rollup and be used in CJS/ESM projects', () => {
const esbuildLib = uniq('esbuildlib');
const viteLib = uniq('vitelib');
const rollupLib = uniq('rolluplib');
Expand Down Expand Up @@ -130,8 +129,7 @@ describe('packaging libs', () => {
expect(output).toContain('rollup default');
}, 500_000);

// TODO Re-enable this when it is passing
xit('should build with tsc, swc and be used in CJS/ESM projects', async () => {
it('should build with tsc, swc and be used in CJS/ESM projects', async () => {
const tscLib = uniq('tsclib');
const swcLib = uniq('swclib');
const tscEsmLib = uniq('tscesmlib');
Expand Down
3 changes: 1 addition & 2 deletions e2e/rollup/src/rollup.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -114,8 +114,7 @@ describe('Rollup Plugin', () => {
});
});

// TODO: Re-enable this when it is passing
xit('should be able to build libs generated with @nx/js:lib --bundler rollup', () => {
it('should be able to build libs generated with @nx/js:lib --bundler rollup', () => {
const jsLib = uniq('jslib');
runCLI(`generate @nx/js:lib ${jsLib} --bundler rollup`);
expect(() => runCLI(`build ${jsLib}`)).not.toThrow();
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -100,9 +100,9 @@
"@supabase/supabase-js": "^2.26.0",
"@svgr/rollup": "^8.0.1",
"@svgr/webpack": "^8.0.1",
"@swc-node/register": "^1.4.2",
"@swc-node/register": "^1.6.7",
"@swc/cli": "0.1.62",
"@swc/core": "^1.3.51",
"@swc/core": "^1.3.85",
"@swc/jest": "^0.2.20",
"@testing-library/react": "13.4.0",
"@types/cytoscape": "^3.18.2",
Expand Down
19 changes: 19 additions & 0 deletions packages/js/migrations.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,12 @@
"version": "16.6.0-beta.0",
"description": "Explicitly set 'updateBuildableProjectDepsInPackageJson' to 'true' in targets that rely on that value as the default.",
"factory": "./src/migrations/update-16-6-0/explicitly-set-projects-to-update-buildable-deps"
},
"16-8-2-update-swcrc": {
jaysoo marked this conversation as resolved.
Show resolved Hide resolved
"cli": "nx",
"version": "16.8.2-beta.0",
"description": "Remove invalid options (strict, noInterop) for ES6 type modules.",
"factory": "./src/migrations/update-16-8-2/update-swcrc"
}
},
"packageJsonUpdates": {
Expand Down Expand Up @@ -98,6 +104,19 @@
"version": "~5.1.3"
}
}
},
"16.8.2": {
"version": "16.8.2-beta.0",
"packages": {
"@swc/core": {
"version": "~1.3.85",
"alwaysAddToPackageJson": false
},
"@swc/helpers": {
"version": "~0.5.2",
"alwaysAddToPackageJson": false
}
}
}
}
}
82 changes: 82 additions & 0 deletions packages/js/src/migrations/update-16-8-2/update-swcrc.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
import { addProjectConfiguration, readJson, Tree, writeJson } from '@nx/devkit';
import { createTreeWithEmptyWorkspace } from '@nx/devkit/testing';
import update from './update-swcrc';

describe('Migration: update .swcrc', () => {
let tree: Tree;

beforeEach(async () => {
tree = createTreeWithEmptyWorkspace();
});

it('should remove invalid options for ES6 modules', async () => {
addProjectConfiguration(tree, 'pkg', {
root: 'pkg',
});
writeJson(tree, 'pkg/.swcrc', {
module: {
type: 'es6',
strict: true,
noInterop: true,
},
});

await update(tree);

expect(readJson(tree, 'pkg/.swcrc')).toEqual({
module: {
type: 'es6',
},
});
});

it('should keep options for CommonJS modules', async () => {
addProjectConfiguration(tree, 'pkg', {
root: 'pkg',
});
writeJson(tree, 'pkg/.swcrc', {
module: {
type: 'commonjs',
strict: true,
noInterop: true,
},
});

await update(tree);

expect(readJson(tree, 'pkg/.swcrc')).toEqual({
module: {
type: 'commonjs',
strict: true,
noInterop: true,
},
});
});

it('should ignore projects without module options in .swcrc', async () => {
addProjectConfiguration(tree, 'pkg', {
root: 'pkg',
});
writeJson(tree, 'pkg/.swcrc', {
jsc: {
target: 'es2017',
},
});

await expect(update(tree)).resolves.not.toThrow();

expect(readJson(tree, 'pkg/.swcrc')).toEqual({
jsc: {
target: 'es2017',
},
});
});

it('should ignore projects without .swcrc', async () => {
addProjectConfiguration(tree, 'pkg', {
root: 'pkg',
});

await expect(update(tree)).resolves.not.toThrow();
});
});
30 changes: 30 additions & 0 deletions packages/js/src/migrations/update-16-8-2/update-swcrc.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import {
formatFiles,
getProjects,
readJson,
Tree,
writeJson,
} from '@nx/devkit';
import { join } from 'path';

export default async function update(tree: Tree) {
const projects = getProjects(tree);

for (const config of projects.values()) {
const swcrcPath = join(config.root, '.swcrc');
if (!tree.exists(swcrcPath)) continue;
const json = readJson(tree, swcrcPath);
// No longer need strict or noInterop for es6 modules
// See: https://github.com/swc-project/swc/commit/7e8d72d
if (
json.module?.type === 'es6' &&
(json.module?.strict || json.module?.noInterop)
) {
delete json.module.noInterop;
delete json.module.strict;
writeJson(tree, swcrcPath, json);
}
}

await formatFiles(tree);
}
4 changes: 1 addition & 3 deletions packages/js/src/utils/swc/add-swc-config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,7 @@ const swcOptionsString = (type: 'commonjs' | 'es6' = 'commonjs') => `{
"loose": true
},
"module": {
"type": "${type}",
"strict": true,
"noInterop": true
"type": "${type}"
},
"sourceMaps": true,
"exclude": ${JSON.stringify(defaultExclude)}
Expand Down
4 changes: 2 additions & 2 deletions packages/js/src/utils/versions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ export const nxVersion = require('../../package.json').version;
export const esbuildVersion = '^0.17.17';
export const prettierVersion = '^2.6.2';
export const swcCliVersion = '~0.1.62';
export const swcCoreVersion = '~1.3.51';
export const swcHelpersVersion = '~0.5.0';
export const swcCoreVersion = '~1.3.85';
export const swcHelpersVersion = '~0.5.2';
export const swcNodeVersion = '~1.4.2';
export const tsLibVersion = '^2.3.0';
export const typesNodeVersion = '18.7.1';
Expand Down
4 changes: 2 additions & 2 deletions packages/nx/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -69,8 +69,8 @@
"node-machine-id": "1.1.12"
},
"peerDependencies": {
"@swc-node/register": "^1.4.2",
"@swc/core": "^1.2.173"
"@swc-node/register": "^1.6.7",
"@swc/core": "^1.3.85"
},
"peerDependenciesMeta": {
"@swc-node/register": {
Expand Down