From aaae0d4f2eeaa09def735212eb1a49eaa47c711b Mon Sep 17 00:00:00 2001 From: Igor Randjelovic Date: Sat, 14 Nov 2020 14:27:52 +0100 Subject: [PATCH] feat: basic webpack-chain setup --- .../__snapshots__/vue.spec.ts.snap | 26 +++++++++++++++++++ .../__tests__/configuration/vue.spec.ts | 7 +++++ packages/webpack5/src/configuration/base.ts | 6 ++++- packages/webpack5/src/configuration/vue.ts | 17 ++++++++++-- packages/webpack5/tsconfig.json | 2 +- 5 files changed, 54 insertions(+), 4 deletions(-) create mode 100644 packages/webpack5/__tests__/configuration/__snapshots__/vue.spec.ts.snap create mode 100644 packages/webpack5/__tests__/configuration/vue.spec.ts diff --git a/packages/webpack5/__tests__/configuration/__snapshots__/vue.spec.ts.snap b/packages/webpack5/__tests__/configuration/__snapshots__/vue.spec.ts.snap new file mode 100644 index 000000000..d0ab8a309 --- /dev/null +++ b/packages/webpack5/__tests__/configuration/__snapshots__/vue.spec.ts.snap @@ -0,0 +1,26 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`vue configuration works 1`] = ` +Object { + "entry": Object { + "bundle.js": Array [ + "bundle.js", + ], + }, + "module": Object { + "rules": Array [ + Object { + "test": /\\\\\\.vue\\$/, + "use": Array [ + Object { + "loader": "vue-loader", + "options": Object { + "compiler": "nativescript-vue-template-compiler", + }, + }, + ], + }, + ], + }, +} +`; diff --git a/packages/webpack5/__tests__/configuration/vue.spec.ts b/packages/webpack5/__tests__/configuration/vue.spec.ts new file mode 100644 index 000000000..9e1ce57d5 --- /dev/null +++ b/packages/webpack5/__tests__/configuration/vue.spec.ts @@ -0,0 +1,7 @@ +import { vueConfig } from '@nativescript/webpack'; + +describe('vue configuration', () => { + it('works', () => { + expect(vueConfig('')).toMatchSnapshot(); + }); +}); diff --git a/packages/webpack5/src/configuration/base.ts b/packages/webpack5/src/configuration/base.ts index b275614c5..97b065dca 100644 --- a/packages/webpack5/src/configuration/base.ts +++ b/packages/webpack5/src/configuration/base.ts @@ -2,5 +2,9 @@ import { Configuration } from 'webpack'; // todo: add base configuration that's shared across all flavors export default function (env): Configuration { - return {}; + return { + entry: { + 'bundle.js': 'bundle.js', + }, + }; } diff --git a/packages/webpack5/src/configuration/vue.ts b/packages/webpack5/src/configuration/vue.ts index e427b6c3c..c2975c8f9 100644 --- a/packages/webpack5/src/configuration/vue.ts +++ b/packages/webpack5/src/configuration/vue.ts @@ -1,10 +1,23 @@ import base from './base'; -import Config from 'webpack-chain'; +import { default as Config } from 'webpack-chain'; // todo: add base configuration for vue export default function (env) { const config = new Config().merge(base(env)); + config.module + .rule('vue') + .test(/\.vue$/) + .use('vue-loader') + .loader('vue-loader') + .tap((options) => { + return { + ...options, + compiler: 'nativescript-vue-template-compiler', + }; + }) + .end(); + // todo: we may want to use webpack-chain internally // to avoid "trying to read property x of undefined" type of issues /* @@ -14,5 +27,5 @@ export default function (env) { }); */ - return {}; + return config.toConfig(); } diff --git a/packages/webpack5/tsconfig.json b/packages/webpack5/tsconfig.json index 8cad0778d..c29859e2e 100644 --- a/packages/webpack5/tsconfig.json +++ b/packages/webpack5/tsconfig.json @@ -19,7 +19,7 @@ "src" ] }, - "allowSyntheticDefaultImports": true + "esModuleInterop": true }, "exclude": [ "node_modules"