From 11d06e34b1b438c833810097100b0ee43c4114d7 Mon Sep 17 00:00:00 2001 From: Art Lowel Date: Tue, 28 May 2019 13:24:30 +0200 Subject: [PATCH] moved themes to separate folder --- .../home-news/home-news.component.ts | 4 +- .../themes/home-news.component.mantis.scss | 4 - src/app/+home-page/home-page.component.ts | 4 +- .../search-facet-option.component.ts | 2 +- .../search-facet-range-option.component.ts | 2 +- .../search-filter/search-filter.component.ts | 4 +- .../search-range-filter.component.ts | 2 +- .../search-range-filter.component.mantis.scss | 5 - .../search-filters.component.ts | 2 +- .../search-settings.component.ts | 4 +- src/app/navbar/navbar.component.ts | 4 +- .../themes/navbar.component.mantis.scss | 7 - .../search-form/search-form.component.ts | 2 +- src/styles/_variables.scss | 6 +- .../home-news/home-news.component.html | 0 .../home-news/home-news.component.scss | 4 + .../app/+home-page/home-page.component.html | 0 .../app/+home-page/home-page.component.scss | 0 .../search-facet-option.component.html | 0 .../search-facet-range-option.component.html | 0 .../search-filter.component.html | 0 .../search-filter.component.scss | 2 +- .../search-range-filter.component.scss | 5 + .../search-filters.component.html | 0 .../search-settings.component.html | 0 .../search-settings.component.scss | 2 +- .../mantis/app/navbar/navbar.component.html | 0 .../mantis/app/navbar/navbar.component.scss | 7 + .../search-form/search-form.component.html | 0 .../mantis/styles/_bootstrap_variables.scss | 0 .../mantis/styles/_custom_variables.scss | 0 webpack/helpers.js | 24 +- webpack/webpack.common.js | 309 +++++++++++------- webpack/webpack.server.js | 1 - 34 files changed, 228 insertions(+), 178 deletions(-) delete mode 100644 src/app/+home-page/home-news/themes/home-news.component.mantis.scss delete mode 100644 src/app/+search-page/search-filters/search-filter/search-range-filter/themes/search-range-filter.component.mantis.scss delete mode 100644 src/app/navbar/themes/navbar.component.mantis.scss rename src/app/+home-page/home-news/themes/home-news.component.mantis.html => themes/mantis/app/+home-page/home-news/home-news.component.html (100%) create mode 100644 themes/mantis/app/+home-page/home-news/home-news.component.scss rename src/app/+home-page/themes/home-page.component.mantis.html => themes/mantis/app/+home-page/home-page.component.html (100%) rename src/app/+home-page/themes/home-page.component.mantis.scss => themes/mantis/app/+home-page/home-page.component.scss (100%) rename src/app/+search-page/search-filters/search-filter/search-facet-filter-options/search-facet-option/themes/search-facet-option.component.mantis.html => themes/mantis/app/+search-page/search-filters/search-filter/search-facet-filter-options/search-facet-option/search-facet-option.component.html (100%) rename src/app/+search-page/search-filters/search-filter/search-facet-filter-options/search-facet-range-option/themes/search-facet-range-option.component.mantis.html => themes/mantis/app/+search-page/search-filters/search-filter/search-facet-filter-options/search-facet-range-option/search-facet-range-option.component.html (100%) rename src/app/+search-page/search-filters/search-filter/themes/search-filter.component.mantis.html => themes/mantis/app/+search-page/search-filters/search-filter/search-filter.component.html (100%) rename src/app/+search-page/search-filters/search-filter/themes/search-filter.component.mantis.scss => themes/mantis/app/+search-page/search-filters/search-filter/search-filter.component.scss (58%) create mode 100644 themes/mantis/app/+search-page/search-filters/search-filter/search-range-filter/search-range-filter.component.scss rename src/app/+search-page/search-filters/themes/search-filters.component.mantis.html => themes/mantis/app/+search-page/search-filters/search-filters.component.html (100%) rename src/app/+search-page/search-settings/themes/search-settings.component.mantis.html => themes/mantis/app/+search-page/search-settings/search-settings.component.html (100%) rename src/app/+search-page/search-settings/themes/search-settings.component.mantis.scss => themes/mantis/app/+search-page/search-settings/search-settings.component.scss (62%) rename src/app/navbar/themes/navbar.component.mantis.html => themes/mantis/app/navbar/navbar.component.html (100%) create mode 100644 themes/mantis/app/navbar/navbar.component.scss rename src/app/shared/search-form/themes/search-form.component.mantis.html => themes/mantis/app/shared/search-form/search-form.component.html (100%) rename src/styles/themes/_bootstrap_variables.mantis.scss => themes/mantis/styles/_bootstrap_variables.scss (100%) rename src/styles/themes/_custom_variables.mantis.scss => themes/mantis/styles/_custom_variables.scss (100%) diff --git a/src/app/+home-page/home-news/home-news.component.ts b/src/app/+home-page/home-news/home-news.component.ts index c065fc8db7..cebe217623 100644 --- a/src/app/+home-page/home-news/home-news.component.ts +++ b/src/app/+home-page/home-news/home-news.component.ts @@ -2,8 +2,8 @@ import { Component } from '@angular/core'; @Component({ selector: 'ds-home-news', - styleUrls: ['./$themePath$/home-news.component.$theme$.scss'], - templateUrl: './$themePath$/home-news.component.$theme$.html' + styleUrls: ['./home-news.component.scss'], + templateUrl: './home-news.component.html' }) /** diff --git a/src/app/+home-page/home-news/themes/home-news.component.mantis.scss b/src/app/+home-page/home-news/themes/home-news.component.mantis.scss deleted file mode 100644 index f4fbdf0ea6..0000000000 --- a/src/app/+home-page/home-news/themes/home-news.component.mantis.scss +++ /dev/null @@ -1,4 +0,0 @@ -@import '../home-news.component.scss'; -.jumbotron { - background-color: transparent; -} diff --git a/src/app/+home-page/home-page.component.ts b/src/app/+home-page/home-page.component.ts index e9650df8af..902a0e820d 100644 --- a/src/app/+home-page/home-page.component.ts +++ b/src/app/+home-page/home-page.component.ts @@ -2,8 +2,8 @@ import { Component } from '@angular/core'; @Component({ selector: 'ds-home-page', - styleUrls: ['./$themePath$/home-page.component.$theme$.scss'], - templateUrl: './$themePath$/home-page.component.$theme$.html' + styleUrls: ['./home-page.component.scss'], + templateUrl: './home-page.component.html' }) export class HomePageComponent { } diff --git a/src/app/+search-page/search-filters/search-filter/search-facet-filter-options/search-facet-option/search-facet-option.component.ts b/src/app/+search-page/search-filters/search-filter/search-facet-filter-options/search-facet-option/search-facet-option.component.ts index 1a827f7def..b5d2a56e31 100644 --- a/src/app/+search-page/search-filters/search-filter/search-facet-filter-options/search-facet-option/search-facet-option.component.ts +++ b/src/app/+search-page/search-filters/search-filter/search-facet-filter-options/search-facet-option/search-facet-option.component.ts @@ -14,7 +14,7 @@ import { FilterType } from '../../../../search-service/filter-type.model'; selector: 'ds-search-facet-option', styleUrls: ['./search-facet-option.component.scss'], // templateUrl: './search-facet-option.component.html', - templateUrl: './$themePath$/search-facet-option.component.$theme$.html', + templateUrl: './search-facet-option.component.html', }) /** diff --git a/src/app/+search-page/search-filters/search-filter/search-facet-filter-options/search-facet-range-option/search-facet-range-option.component.ts b/src/app/+search-page/search-filters/search-filter/search-facet-filter-options/search-facet-range-option/search-facet-range-option.component.ts index 369fa6bf7d..77f240a899 100644 --- a/src/app/+search-page/search-filters/search-filter/search-facet-filter-options/search-facet-range-option/search-facet-range-option.component.ts +++ b/src/app/+search-page/search-filters/search-filter/search-facet-filter-options/search-facet-range-option/search-facet-range-option.component.ts @@ -19,7 +19,7 @@ const rangeDelimiter = '-'; selector: 'ds-search-facet-range-option', styleUrls: ['./search-facet-range-option.component.scss'], // templateUrl: './search-facet-range-option.component.html', - templateUrl: './$themePath$/search-facet-range-option.component.$theme$.html', + templateUrl: './search-facet-range-option.component.html', }) /** diff --git a/src/app/+search-page/search-filters/search-filter/search-filter.component.ts b/src/app/+search-page/search-filters/search-filter/search-filter.component.ts index d64999e930..bfe9f3be63 100644 --- a/src/app/+search-page/search-filters/search-filter/search-filter.component.ts +++ b/src/app/+search-page/search-filters/search-filter/search-filter.component.ts @@ -13,8 +13,8 @@ import { SEARCH_CONFIG_SERVICE } from '../../../+my-dspace-page/my-dspace-page.c @Component({ selector: 'ds-search-filter', - styleUrls: ['./$themePath$/search-filter.component.$theme$.scss'], - templateUrl: './$themePath$/search-filter.component.$theme$.html', + styleUrls: ['./search-filter.component.scss'], + templateUrl: './search-filter.component.html', animations: [slide], }) diff --git a/src/app/+search-page/search-filters/search-filter/search-range-filter/search-range-filter.component.ts b/src/app/+search-page/search-filters/search-filter/search-range-filter/search-range-filter.component.ts index 8988e05459..95d7441184 100644 --- a/src/app/+search-page/search-filters/search-filter/search-range-filter/search-range-filter.component.ts +++ b/src/app/+search-page/search-filters/search-filter/search-range-filter/search-range-filter.component.ts @@ -41,7 +41,7 @@ const dateFormats = ['YYYY', 'YYYY-MM', 'YYYY-MM-DD']; */ @Component({ selector: 'ds-search-range-filter', - styleUrls: ['./$themePath$/search-range-filter.component.$theme$.scss'], + styleUrls: ['./search-range-filter.component.scss'], templateUrl: './search-range-filter.component.html', animations: [facetLoad] }) diff --git a/src/app/+search-page/search-filters/search-filter/search-range-filter/themes/search-range-filter.component.mantis.scss b/src/app/+search-page/search-filters/search-filter/search-range-filter/themes/search-range-filter.component.mantis.scss deleted file mode 100644 index 2caebead41..0000000000 --- a/src/app/+search-page/search-filters/search-filter/search-range-filter/themes/search-range-filter.component.mantis.scss +++ /dev/null @@ -1,5 +0,0 @@ -@import '../search-range-filter.component'; - -::ng-deep .noUi-connect { - background: $info; -} diff --git a/src/app/+search-page/search-filters/search-filters.component.ts b/src/app/+search-page/search-filters/search-filters.component.ts index 3299f06e24..e970647747 100644 --- a/src/app/+search-page/search-filters/search-filters.component.ts +++ b/src/app/+search-page/search-filters/search-filters.component.ts @@ -14,7 +14,7 @@ import { SEARCH_CONFIG_SERVICE } from '../../+my-dspace-page/my-dspace-page.comp @Component({ selector: 'ds-search-filters', styleUrls: ['./search-filters.component.scss'], - templateUrl: './$themePath$/search-filters.component.$theme$.html', + templateUrl: './search-filters.component.html', }) /** diff --git a/src/app/+search-page/search-settings/search-settings.component.ts b/src/app/+search-page/search-settings/search-settings.component.ts index a976a0d106..aac861c64f 100644 --- a/src/app/+search-page/search-settings/search-settings.component.ts +++ b/src/app/+search-page/search-settings/search-settings.component.ts @@ -9,8 +9,8 @@ import { SEARCH_CONFIG_SERVICE } from '../../+my-dspace-page/my-dspace-page.comp @Component({ selector: 'ds-search-settings', - styleUrls: ['./$themePath$/search-settings.component.$theme$.scss'], - templateUrl: './$themePath$/search-settings.component.$theme$.html' + styleUrls: ['./search-settings.component.scss'], + templateUrl: './search-settings.component.html' }) /** diff --git a/src/app/navbar/navbar.component.ts b/src/app/navbar/navbar.component.ts index 103856aa49..404aabd4c3 100644 --- a/src/app/navbar/navbar.component.ts +++ b/src/app/navbar/navbar.component.ts @@ -12,8 +12,8 @@ import { HostWindowService } from '../shared/host-window.service'; */ @Component({ selector: 'ds-navbar', - styleUrls: ['./$themePath$/navbar.component.$theme$.scss'], - templateUrl: './$themePath$/navbar.component.$theme$.html', + styleUrls: ['./navbar.component.scss'], + templateUrl: './navbar.component.html', animations: [slideMobileNav] }) export class NavbarComponent extends MenuComponent implements OnInit { diff --git a/src/app/navbar/themes/navbar.component.mantis.scss b/src/app/navbar/themes/navbar.component.mantis.scss deleted file mode 100644 index 3f96826659..0000000000 --- a/src/app/navbar/themes/navbar.component.mantis.scss +++ /dev/null @@ -1,7 +0,0 @@ -@import '../navbar.component.scss'; - -nav.navbar { - border-bottom: 5px $green solid; -} - - diff --git a/src/app/shared/search-form/search-form.component.ts b/src/app/shared/search-form/search-form.component.ts index f7cb33f691..7414dd70e6 100644 --- a/src/app/shared/search-form/search-form.component.ts +++ b/src/app/shared/search-form/search-form.component.ts @@ -16,7 +16,7 @@ import { SearchService } from '../../+search-page/search-service/search.service' selector: 'ds-search-form', styleUrls: ['./search-form.component.scss'], // templateUrl: './search-form.component.html', - templateUrl: './$themePath$/search-form.component.$theme$.html' + templateUrl: './search-form.component.html' }) /** diff --git a/src/styles/_variables.scss b/src/styles/_variables.scss index fd016fd761..1e993df18e 100644 --- a/src/styles/_variables.scss +++ b/src/styles/_variables.scss @@ -1,11 +1,13 @@ @import '_functions.scss'; @import '../../node_modules/bootstrap/scss/functions.scss'; -@import '$themePath$/bootstrap_variables.$theme$.scss'; +//@import '$themePath$/bootstrap_variables.scss'; +@import '../../themes/mantis/styles/bootstrap_variables.scss'; @import 'bootstrap_variables.scss'; @import '../../node_modules/bootstrap/scss/variables.scss'; -@import '$themePath$/custom_variables.$theme$.scss'; +//@import '$themePath$/custom_variables.scss'; +@import '../../themes/mantis/styles/custom_variables.scss'; @import 'custom_variables.scss'; diff --git a/src/app/+home-page/home-news/themes/home-news.component.mantis.html b/themes/mantis/app/+home-page/home-news/home-news.component.html similarity index 100% rename from src/app/+home-page/home-news/themes/home-news.component.mantis.html rename to themes/mantis/app/+home-page/home-news/home-news.component.html diff --git a/themes/mantis/app/+home-page/home-news/home-news.component.scss b/themes/mantis/app/+home-page/home-news/home-news.component.scss new file mode 100644 index 0000000000..ed64dcd769 --- /dev/null +++ b/themes/mantis/app/+home-page/home-news/home-news.component.scss @@ -0,0 +1,4 @@ +@import '../../../../../src/app/+home-page/home-news/home-news.component'; +.jumbotron { + background-color: transparent; +} diff --git a/src/app/+home-page/themes/home-page.component.mantis.html b/themes/mantis/app/+home-page/home-page.component.html similarity index 100% rename from src/app/+home-page/themes/home-page.component.mantis.html rename to themes/mantis/app/+home-page/home-page.component.html diff --git a/src/app/+home-page/themes/home-page.component.mantis.scss b/themes/mantis/app/+home-page/home-page.component.scss similarity index 100% rename from src/app/+home-page/themes/home-page.component.mantis.scss rename to themes/mantis/app/+home-page/home-page.component.scss diff --git a/src/app/+search-page/search-filters/search-filter/search-facet-filter-options/search-facet-option/themes/search-facet-option.component.mantis.html b/themes/mantis/app/+search-page/search-filters/search-filter/search-facet-filter-options/search-facet-option/search-facet-option.component.html similarity index 100% rename from src/app/+search-page/search-filters/search-filter/search-facet-filter-options/search-facet-option/themes/search-facet-option.component.mantis.html rename to themes/mantis/app/+search-page/search-filters/search-filter/search-facet-filter-options/search-facet-option/search-facet-option.component.html diff --git a/src/app/+search-page/search-filters/search-filter/search-facet-filter-options/search-facet-range-option/themes/search-facet-range-option.component.mantis.html b/themes/mantis/app/+search-page/search-filters/search-filter/search-facet-filter-options/search-facet-range-option/search-facet-range-option.component.html similarity index 100% rename from src/app/+search-page/search-filters/search-filter/search-facet-filter-options/search-facet-range-option/themes/search-facet-range-option.component.mantis.html rename to themes/mantis/app/+search-page/search-filters/search-filter/search-facet-filter-options/search-facet-range-option/search-facet-range-option.component.html diff --git a/src/app/+search-page/search-filters/search-filter/themes/search-filter.component.mantis.html b/themes/mantis/app/+search-page/search-filters/search-filter/search-filter.component.html similarity index 100% rename from src/app/+search-page/search-filters/search-filter/themes/search-filter.component.mantis.html rename to themes/mantis/app/+search-page/search-filters/search-filter/search-filter.component.html diff --git a/src/app/+search-page/search-filters/search-filter/themes/search-filter.component.mantis.scss b/themes/mantis/app/+search-page/search-filters/search-filter/search-filter.component.scss similarity index 58% rename from src/app/+search-page/search-filters/search-filter/themes/search-filter.component.mantis.scss rename to themes/mantis/app/+search-page/search-filters/search-filter/search-filter.component.scss index 308c15cb20..e1614374a3 100644 --- a/src/app/+search-page/search-filters/search-filter/themes/search-filter.component.mantis.scss +++ b/themes/mantis/app/+search-page/search-filters/search-filter/search-filter.component.scss @@ -1,4 +1,4 @@ -@import '../search-filter.component'; +@import '../../../../../../src/app/+search-page/search-filters/search-filter/search-filter.component'; .facet-filter { background-color: map-get($theme-colors, light); diff --git a/themes/mantis/app/+search-page/search-filters/search-filter/search-range-filter/search-range-filter.component.scss b/themes/mantis/app/+search-page/search-filters/search-filter/search-range-filter/search-range-filter.component.scss new file mode 100644 index 0000000000..1fd2b06c6a --- /dev/null +++ b/themes/mantis/app/+search-page/search-filters/search-filter/search-range-filter/search-range-filter.component.scss @@ -0,0 +1,5 @@ +@import '../../../../../../../src/app/+search-page/search-filters/search-filter/search-range-filter/search-range-filter.component'; + +::ng-deep .noUi-connect { + background: $info; +} diff --git a/src/app/+search-page/search-filters/themes/search-filters.component.mantis.html b/themes/mantis/app/+search-page/search-filters/search-filters.component.html similarity index 100% rename from src/app/+search-page/search-filters/themes/search-filters.component.mantis.html rename to themes/mantis/app/+search-page/search-filters/search-filters.component.html diff --git a/src/app/+search-page/search-settings/themes/search-settings.component.mantis.html b/themes/mantis/app/+search-page/search-settings/search-settings.component.html similarity index 100% rename from src/app/+search-page/search-settings/themes/search-settings.component.mantis.html rename to themes/mantis/app/+search-page/search-settings/search-settings.component.html diff --git a/src/app/+search-page/search-settings/themes/search-settings.component.mantis.scss b/themes/mantis/app/+search-page/search-settings/search-settings.component.scss similarity index 62% rename from src/app/+search-page/search-settings/themes/search-settings.component.mantis.scss rename to themes/mantis/app/+search-page/search-settings/search-settings.component.scss index f452f15335..2701fa8795 100644 --- a/src/app/+search-page/search-settings/themes/search-settings.component.mantis.scss +++ b/themes/mantis/app/+search-page/search-settings/search-settings.component.scss @@ -1,4 +1,4 @@ -@import '../search-settings.component'; +@import '../../../../../src/app/+search-page/search-settings/search-settings.component'; .setting-option { background-color: map-get($theme-colors, light); diff --git a/src/app/navbar/themes/navbar.component.mantis.html b/themes/mantis/app/navbar/navbar.component.html similarity index 100% rename from src/app/navbar/themes/navbar.component.mantis.html rename to themes/mantis/app/navbar/navbar.component.html diff --git a/themes/mantis/app/navbar/navbar.component.scss b/themes/mantis/app/navbar/navbar.component.scss new file mode 100644 index 0000000000..20263f1073 --- /dev/null +++ b/themes/mantis/app/navbar/navbar.component.scss @@ -0,0 +1,7 @@ +@import '../../../../src/app/navbar/navbar.component.scss'; + +nav.navbar { + border-bottom: 5px $green solid; +} + + diff --git a/src/app/shared/search-form/themes/search-form.component.mantis.html b/themes/mantis/app/shared/search-form/search-form.component.html similarity index 100% rename from src/app/shared/search-form/themes/search-form.component.mantis.html rename to themes/mantis/app/shared/search-form/search-form.component.html diff --git a/src/styles/themes/_bootstrap_variables.mantis.scss b/themes/mantis/styles/_bootstrap_variables.scss similarity index 100% rename from src/styles/themes/_bootstrap_variables.mantis.scss rename to themes/mantis/styles/_bootstrap_variables.scss diff --git a/src/styles/themes/_custom_variables.mantis.scss b/themes/mantis/styles/_custom_variables.scss similarity index 100% rename from src/styles/themes/_custom_variables.mantis.scss rename to themes/mantis/styles/_custom_variables.scss diff --git a/webpack/helpers.js b/webpack/helpers.js index fb4dfc1165..5b4fced7bb 100644 --- a/webpack/helpers.js +++ b/webpack/helpers.js @@ -1,6 +1,7 @@ const { join, resolve, + normalize, } = require('path'); @@ -8,8 +9,10 @@ function root(path) { return resolve(__dirname, '..', path); } -const theme = ''; -// const theme = 'mantis'; +// const theme = ''; +const theme = 'mantis'; + +const themePath = normalize(join(__dirname, '..', 'themes', theme)); const globalCSSImports = [ resolve(__dirname, '..', 'src/styles/_variables.scss'), @@ -19,24 +22,10 @@ const globalCSSImports = [ const themeReplaceOptions = { multiple: [ - { - search: '$theme$.', - replace: theme + (theme.length ? '.' : ''), - - }, { search: '$themePath$/', - replace: (theme.length ? 'themes/' : ''), + replace: (themePath.length ? themePath + '/' : ''), - }, - { - search: '$theme$.', - replace: (theme.length ? theme + '.' : ''), - - }, - { - search: '$themePath$/', - replace: (theme.length ? 'themes/' : ''), } ] }; @@ -45,6 +34,7 @@ module.exports = { root: root, join: join, theme: theme, + themePath: themePath, globalCSSImports: globalCSSImports, themeReplaceOptions: themeReplaceOptions }; diff --git a/webpack/webpack.common.js b/webpack/webpack.common.js index d6b273000b..aa21a14c56 100644 --- a/webpack/webpack.common.js +++ b/webpack/webpack.common.js @@ -1,137 +1,196 @@ const CopyWebpackPlugin = require('copy-webpack-plugin'); const path = require('path'); +const fs = require('fs'); const { - root, - join, - globalCSSImports, - themeReplaceOptions + root, + join, + globalCSSImports, + themeReplaceOptions, + theme, + themePath } = require('./helpers'); +const srcPath = root('src'); + +const getThemedPath = (componentPath, ext) => { + const parsedPath = path.parse(componentPath); + const relativePath = path.relative(srcPath, parsedPath.dir); + return path.join(themePath, relativePath, `${parsedPath.name}.${ext}`); +}; module.exports = { - mode: 'development', - devtool: 'source-map', - resolve: { - extensions: ['.ts', '.js', '.json'] - }, - output: { - path: root('dist') - }, - watchOptions: { - aggregateTimeout: 50, - }, - node: { - fs: "empty", - module: "empty" - }, - module: { - rules: [ + mode: 'development', + devtool: 'source-map', + resolve: { + extensions: ['.ts', '.js', '.json'] + }, + output: { + path: root('dist') + }, + watchOptions: { + aggregateTimeout: 50, + }, + node: { + fs: "empty", + module: "empty" + }, + module: { + rules: [ + { + test: (filePath) => { + if (/\.component.ts$/.test(filePath)) { + const themedStylePath = getThemedPath(filePath, 'scss'); + return fs.existsSync(themedStylePath); + } else { + return false; + } + }, + use: (info) => { + const parsedPath = path.parse(info.resource); + const themedStylePath = getThemedPath(info.resource, 'scss'); + + return [ + 'debug-loader', { - test: /\.component.ts$/, - loader: 'string-replace-loader', - options: themeReplaceOptions - }, - { - test: /\.ts$/, - loader: '@ngtools/webpack' - }, - { - test: /\.css$/, - use: [{ - loader: 'to-string-loader', - options: { - sourceMap: true - } - }, - { - loader: 'css-loader', - options: { - sourceMap: true, - modules: true - } - }, - { - loader: 'postcss-loader', - options: { - sourceMap: true - } - } - ] - }, - { - test: /\.scss$/, - exclude: [/node_modules/, - path.resolve(__dirname, '..', 'src/styles/_exposed_variables.scss') - ], - use: [ - { - loader: 'raw-loader', - options: { - sourceMap: true - } - }, - { - loader: 'resolve-url-loader', - options: { - sourceMap: true - } - }, - { - loader: 'sass-loader', - options: { - sourceMap: true - } - }, - { - loader: 'string-replace-loader', - options: themeReplaceOptions - }, - { - loader: 'sass-resources-loader', - options: { - resources: globalCSSImports - }, - }, - 'webpack-import-glob-loader' - ] - }, - { - test: /_exposed_variables.scss$/, - exclude: /node_modules/, - use: [{ - loader: "css-loader" // translates CSS into CommonJS - }, { - loader: "sass-loader" // compiles Sass to CSS - }, - { - loader: 'string-replace-loader', - options: themeReplaceOptions - }, - { - loader: 'sass-resources-loader', - options: { - resources: globalCSSImports - }, - } - ] - }, - { - test: /\.html$/, - loader: 'raw-loader' + loader: 'string-replace-loader', + options: { + search: `\.\/${parsedPath.name}\.scss`, + replace: themedStylePath, + flags: 'g' + } + } - ] - }, - plugins: [ - new CopyWebpackPlugin([{ - from: join(__dirname, '..', 'node_modules', '@fortawesome', 'fontawesome-free', 'webfonts'), - to: join('assets', 'fonts') - }, { - from: join(__dirname, '..', 'resources', 'images'), - to: join('assets', 'images') - }, { - from: join(__dirname, '..', 'resources', 'i18n'), - to: join('assets', 'i18n') + ] } - ]) + }, + { + test: (filePath) => { + if (/\.component.ts$/.test(filePath)) { + const themedTemplatePath = getThemedPath(filePath, 'html'); + return fs.existsSync(themedTemplatePath); + } else { + return false; + } + }, + use: (info) => { + const parsedPath = path.parse(info.resource); + const themedTemplatePath = getThemedPath(info.resource, 'html'); + + return [ + 'debug-loader', + { + loader: 'string-replace-loader', + options: { + search: `\.\/${parsedPath.name}\.html`, + replace: themedTemplatePath, + flags: 'g' + } + + } + ] + } + }, + { + test: /\.ts$/, + loader: '@ngtools/webpack' + }, + { + test: /\.css$/, + use: [{ + loader: 'to-string-loader', + options: { + sourceMap: true + } + }, + { + loader: 'css-loader', + options: { + sourceMap: true, + modules: true + } + }, + { + loader: 'postcss-loader', + options: { + sourceMap: true + } + } + ] + }, + { + test: /\.scss$/, + exclude: [/node_modules/, + path.resolve(__dirname, '..', 'src/styles/_exposed_variables.scss') + ], + use: [ + { + loader: 'raw-loader', + options: { + sourceMap: true + } + }, + { + loader: 'resolve-url-loader', + options: { + sourceMap: true + } + }, + { + loader: 'sass-loader', + options: { + sourceMap: true + } + }, + { + loader: 'string-replace-loader', + options: themeReplaceOptions + }, + { + loader: 'sass-resources-loader', + options: { + resources: globalCSSImports + }, + }, + 'webpack-import-glob-loader' + ] + }, + { + test: /_exposed_variables.scss$/, + exclude: /node_modules/, + use: [{ + loader: "css-loader" // translates CSS into CommonJS + }, { + loader: "sass-loader" // compiles Sass to CSS + }, + { + loader: 'string-replace-loader', + options: themeReplaceOptions + }, + { + loader: 'sass-resources-loader', + options: { + resources: globalCSSImports + }, + } + ] + }, + { + test: /\.html$/, + loader: 'raw-loader' + } ] + }, + plugins: [ + new CopyWebpackPlugin([{ + from: join(__dirname, '..', 'node_modules', '@fortawesome', 'fontawesome-free', 'webfonts'), + to: join('assets', 'fonts') + }, { + from: join(__dirname, '..', 'resources', 'images'), + to: join('assets', 'images') + }, { + from: join(__dirname, '..', 'resources', 'i18n'), + to: join('assets', 'i18n') + } + ]) + ] }; diff --git a/webpack/webpack.server.js b/webpack/webpack.server.js index d2ac987d6c..f7c490a52b 100644 --- a/webpack/webpack.server.js +++ b/webpack/webpack.server.js @@ -12,7 +12,6 @@ module.exports = { output: { filename: 'server.js' }, - module: {rules: []}, target: 'node', externals: [nodeExternals({ whitelist: [