diff --git a/libs/ng-mocks/package.json b/libs/ng-mocks/package.json index 0ec8b752cd..e01f439a2b 100644 --- a/libs/ng-mocks/package.json +++ b/libs/ng-mocks/package.json @@ -61,20 +61,24 @@ }, "homepage": "https://ng-mocks.sudo.eu", "license": "MIT", - "types": "./ng-mocks.d.ts", + "types": "./index.d.ts", "main": "./index.js", "type": "commonjs", "files": [ "index.js", "index.js.map", - "ng-mocks.d.ts", + "index.mjs", + "index.mjs.map", + "index.d.ts", "src", "examples", "migrations.json" ], "exports": { ".": { - "types": "./ng-mocks.d.ts", + "types": "./index.d.ts", + "require": "./index.js", + "import": "./index.mjs", "default": "./index.js" }, "./package.json": "./package.json" diff --git a/libs/ng-mocks/tsconfig.build.json b/libs/ng-mocks/tsconfig.build.cjs.json similarity index 100% rename from libs/ng-mocks/tsconfig.build.json rename to libs/ng-mocks/tsconfig.build.cjs.json diff --git a/libs/ng-mocks/tsconfig.build.mjs.json b/libs/ng-mocks/tsconfig.build.mjs.json new file mode 100644 index 0000000000..4718e0d3f1 --- /dev/null +++ b/libs/ng-mocks/tsconfig.build.mjs.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.build.cjs.json", + "compilerOptions": { + "module": "ES2015", + "target": "ES2015" + } +} diff --git a/libs/ng-mocks/tsconfig.json b/libs/ng-mocks/tsconfig.json index b78fd31f87..02ef49b87d 100644 --- a/libs/ng-mocks/tsconfig.json +++ b/libs/ng-mocks/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "./tsconfig.build.json", + "extends": "./tsconfig.build.cjs.json", "compilerOptions": { "experimentalDecorators": true }, diff --git a/package.json b/package.json index 58f7b1272c..2cf3e632a7 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "release": "export $(cat .env) && semantic-release", "build": "npm run clean && npm run build:webpack && npm run build:types && cp CHANGELOG.md dist/libs/ng-mocks && cp README.md dist/libs/ng-mocks && cp LICENSE dist/libs/ng-mocks && cp libs/ng-mocks/package.json dist/libs/ng-mocks/package.json && cp libs/ng-mocks/migrations.json dist/libs/ng-mocks/migrations.json && cp -R examples dist/libs/ng-mocks", "build:webpack": "webpack", - "build:types": "dts-bundle-generator --no-banner -o ./dist/libs/ng-mocks/ng-mocks.d.ts --project ./libs/ng-mocks/tsconfig.build.json --no-check --export-referenced-types=false ./libs/ng-mocks/src/index.ts", + "build:types": "dts-bundle-generator --no-banner -o ./dist/libs/ng-mocks/index.d.ts --project ./libs/ng-mocks/tsconfig.build.cjs.json --no-check --export-referenced-types=false ./libs/ng-mocks/src/index.ts", "build:all": "npm run lint && npm run build && npm run test", "build:docs": "cd docs && CI=true npm run build", "clean": "rm -rf dist test-reports tmp", diff --git a/webpack.config.js b/webpack.config.js index e8da2b76f2..c2f68f22c3 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,36 +1,75 @@ const path = require('path'); -module.exports = { - mode: 'production', - devtool: 'source-map', - entry: './libs/ng-mocks/src/index.ts', - target: ['web', 'es3'], - output: { - path: path.resolve(__dirname, './dist/libs/ng-mocks/'), - filename: 'index.js', - library: { - type: 'umd', +module.exports = [ + { + mode: 'production', + devtool: 'source-map', + entry: './libs/ng-mocks/src/index.ts', + target: ['web', 'es3'], + output: { + path: path.resolve(__dirname, './dist/libs/ng-mocks/'), + filename: 'index.js', + library: { + type: 'umd', + }, + globalObject: 'this', }, - globalObject: 'this', - }, - externals: /^@angular\//, - module: { - rules: [ - { - test: /\.tsx?$/, - use: [ - { - loader: 'ts-loader', - options: { - configFile: path.resolve(__dirname, './libs/ng-mocks/tsconfig.build.json'), - transpileOnly: true, + externals: /^@angular\//, + module: { + rules: [ + { + test: /\.tsx?$/, + use: [ + { + loader: 'ts-loader', + options: { + configFile: path.resolve(__dirname, './libs/ng-mocks/tsconfig.build.cjs.json'), + transpileOnly: true, + }, }, - }, - ], - }, - ], + ], + }, + ], + }, + resolve: { + extensions: ['.js', '.cjs', '.mjs', '.ts', '.json'], + }, }, - resolve: { - extensions: ['.js', '.cjs', '.mjs', '.ts', '.json'], + { + mode: 'production', + devtool: 'source-map', + entry: './libs/ng-mocks/src/index.ts', + target: ['web', 'es2015'], + experiments: { + outputModule: true, + }, + output: { + path: path.resolve(__dirname, './dist/libs/ng-mocks/'), + filename: 'index.mjs', + library: { + type: 'module', + }, + globalObject: 'this', + }, + externals: /^@angular\//, + module: { + rules: [ + { + test: /\.tsx?$/, + use: [ + { + loader: 'ts-loader', + options: { + configFile: path.resolve(__dirname, './libs/ng-mocks/tsconfig.build.mjs.json'), + transpileOnly: true, + }, + }, + ], + }, + ], + }, + resolve: { + extensions: ['.js', '.cjs', '.mjs', '.ts', '.json'], + }, }, -}; +];