Enable full ESM support for Node 20+ and modern dependencies, update Jest and build output configuration
- Set "type": "module" in package.json to enable ESM throughout the project. - Changed "main" in package.json to "dist/index.js" to point to the bundled output generated by ncc. - Updated Jest configuration (jest.config.js) to ESM format and to use babel-jest for TypeScript transformation. - Added/updated babel.config.js in ESM format to support TypeScript and ESM for Jest. - Ensured test scripts use NODE_OPTIONS=--experimental-vm-modules for Jest ESM compatibility.
This commit is contained in:
@@ -1,6 +1,12 @@
|
||||
module.exports = {
|
||||
export default {
|
||||
presets: [
|
||||
['@babel/preset-env', { targets: { node: 'current' } }],
|
||||
'@babel/preset-typescript',
|
||||
],
|
||||
[
|
||||
'@babel/preset-env',
|
||||
{
|
||||
targets: { node: 'current' },
|
||||
modules: false
|
||||
}
|
||||
],
|
||||
'@babel/preset-typescript'
|
||||
]
|
||||
};
|
||||
|
||||
677
dist/index.js
generated
vendored
677
dist/index.js
generated
vendored
File diff suppressed because one or more lines are too long
2
dist/index.js.map
generated
vendored
2
dist/index.js.map
generated
vendored
File diff suppressed because one or more lines are too long
2
dist/licenses.txt
generated
vendored
2
dist/licenses.txt
generated
vendored
@@ -528,7 +528,7 @@ THE SOFTWARE.
|
||||
|
||||
@octokit/webhooks
|
||||
MIT
|
||||
Copyright (c) 2017 Gregor Martynus
|
||||
Copyright (c) GitHub 2025 - Licensed as MIT.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
|
||||
3
dist/package.json
generated
vendored
Normal file
3
dist/package.json
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"type": "module"
|
||||
}
|
||||
2
dist/sourcemap-register.cjs
generated
vendored
2
dist/sourcemap-register.cjs
generated
vendored
File diff suppressed because one or more lines are too long
@@ -1,21 +1,15 @@
|
||||
/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */
|
||||
module.exports = {
|
||||
transform: {
|
||||
"^.+\\.tsx?$": "ts-jest",
|
||||
"^.+\\.[t|j]sx?$": "babel-jest", // Use Babel for transforming JS and TS files
|
||||
"^.+\\.mjs$": "jest-transform-stub", // Use the stub to handle ES modules
|
||||
},
|
||||
preset: 'ts-jest',
|
||||
testEnvironment: 'node',
|
||||
moduleNameMapper: {
|
||||
"^octokit$": "<rootDir>/node_modules/octokit/dist-bundle/index.js",
|
||||
"^@github/dependency-submission-toolkit$": "<rootDir>/node_modules/@github/dependency-submission-toolkit/dist/index.js",
|
||||
},
|
||||
extensionsToTreatAsEsm: [".ts"],
|
||||
transformIgnorePatterns: ["/node_modules/(?!(octokit|\\@github\\/dependency-submission-toolkit)/)"], // Ensure octokit and @github/dependency-submission-toolkit are transformed
|
||||
globals: {
|
||||
"ts-jest": {
|
||||
useESM: true,
|
||||
},
|
||||
},
|
||||
};
|
||||
import babel from 'babel-jest';
|
||||
|
||||
export default {
|
||||
testEnvironment: 'node',
|
||||
extensionsToTreatAsEsm: ['.ts'],
|
||||
transform: {
|
||||
'^.+\\.ts$': ['babel-jest', { configFile: './babel.config.js' }]
|
||||
},
|
||||
moduleNameMapper: {},
|
||||
verbose: true,
|
||||
collectCoverage: true,
|
||||
coverageDirectory: 'coverage',
|
||||
testMatch: ['**/*.test.ts'],
|
||||
resolver: undefined,
|
||||
};
|
||||
@@ -2,11 +2,12 @@
|
||||
"name": "component-detection-action",
|
||||
"version": "1.0.0",
|
||||
"description": "Component detection action",
|
||||
"main": "index.ts",
|
||||
"main": "dist/index.js",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"lint": "eslint .",
|
||||
"prepare": "ncc build index.ts -o dist --source-map --license licenses.txt",
|
||||
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
|
||||
"test": "NODE_OPTIONS=--experimental-vm-modules jest",
|
||||
"all": "npm run lint && npm run prepare && npm run test"
|
||||
},
|
||||
"repository": {
|
||||
|
||||
Reference in New Issue
Block a user