diff --git a/packages/webpack5/__tests__/index.spec.ts b/packages/webpack5/__tests__/index.spec.ts new file mode 100644 index 000000000..086239881 --- /dev/null +++ b/packages/webpack5/__tests__/index.spec.ts @@ -0,0 +1,13 @@ +import * as webpack from '@nativescript/webpack'; + +describe('@nativescript/webpack', () => { + it('exports base configs', () => { + expect(webpack.angularConfig).toBeInstanceOf(Function); + expect(webpack.baseConfig).toBeInstanceOf(Function); + expect(webpack.javascriptConfig).toBeInstanceOf(Function); + expect(webpack.reactConfig).toBeInstanceOf(Function); + expect(webpack.svelteConfig).toBeInstanceOf(Function); + expect(webpack.typescriptConfig).toBeInstanceOf(Function); + expect(webpack.vueConfig).toBeInstanceOf(Function); + }); +}); diff --git a/packages/webpack5/jest.config.js b/packages/webpack5/jest.config.js new file mode 100644 index 000000000..fff85eb81 --- /dev/null +++ b/packages/webpack5/jest.config.js @@ -0,0 +1,7 @@ +module.exports = { + preset: 'ts-jest', + testEnvironment: 'node', + moduleNameMapper: { + '^@nativescript/webpack$': '/src' + } +}; diff --git a/packages/webpack5/package.json b/packages/webpack5/package.json index 3d4b1fbc6..79894d9d5 100644 --- a/packages/webpack5/package.json +++ b/packages/webpack5/package.json @@ -5,9 +5,17 @@ "main": "index.js", "license": "Apache-2.0", "scripts": { - "build": "echo todo" + "build": "echo todo", + "test": "jest" }, "devDependencies": { + "@types/jest": "^26.0.15", + "jest": "^26.6.3", + "ts-jest": "^26.4.4", + "typescript": "^4.0.5", "webpack": "^5.4.0" + }, + "dependencies": { + "webpack-chain": "^6.5.1" } } diff --git a/packages/webpack5/src/configuration/vue.ts b/packages/webpack5/src/configuration/vue.ts index 9f2347901..e427b6c3c 100644 --- a/packages/webpack5/src/configuration/vue.ts +++ b/packages/webpack5/src/configuration/vue.ts @@ -1,15 +1,18 @@ import base from './base'; +import Config from 'webpack-chain'; // todo: add base configuration for vue export default function (env) { - const config = base(env); + const config = new Config().merge(base(env)); // todo: we may want to use webpack-chain internally // to avoid "trying to read property x of undefined" type of issues - config.module.rules.push({ - test: /.vue$/, - use: [], - }); + /* + config.module.rules.push({ + test: /.vue$/, + use: [], + }); + */ return {}; } diff --git a/packages/webpack5/tsconfig.json b/packages/webpack5/tsconfig.json index ccf9cdcf1..8cad0778d 100644 --- a/packages/webpack5/tsconfig.json +++ b/packages/webpack5/tsconfig.json @@ -1,19 +1,27 @@ { - "compilerOptions": { - "rootDir": ".", - "baseUrl": ".", - "target": "es2015", - "module": "commonjs", - "declaration": true, - "emitDecoratorMetadata": true, - "experimentalDecorators": true, - "lib": [ "es2017" ], - "sourceMap": true, - "skipLibCheck": true, - "skipDefaultLibCheck": true, - "diagnostics": true - }, - "exclude": [ - "node_modules", - ] + "compilerOptions": { + "rootDir": ".", + "baseUrl": ".", + "target": "es2015", + "module": "commonjs", + "declaration": true, + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "lib": [ + "es2017" + ], + "sourceMap": true, + "skipLibCheck": true, + "skipDefaultLibCheck": true, + "diagnostics": true, + "paths": { + "@nativescript/webpack": [ + "src" + ] + }, + "allowSyntheticDefaultImports": true + }, + "exclude": [ + "node_modules" + ] }