mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-08-19 04:49:33 -07:00
Various improvements to webpack/gulp/vscode support (#1617)
* Various improvements to webpack/gulp/vscode support * Improve vendor webpack config - hopefully fix const/let appearing
This commit is contained in:
parent
71aa0750d6
commit
d59be43ca1
21 changed files with 914 additions and 708 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -241,4 +241,5 @@ _Pvt_Extensions
|
||||||
|
|
||||||
|
|
||||||
# CAKE - C# Make
|
# CAKE - C# Make
|
||||||
/Tools/*
|
/Tools/*
|
||||||
|
*.db-journal
|
||||||
|
|
6
src/Ombi/.vscode/extensions.json
vendored
Normal file
6
src/Ombi/.vscode/extensions.json
vendored
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"recommendations": [
|
||||||
|
"Angular.ng-template",
|
||||||
|
"ms-vscode.csharp"
|
||||||
|
]
|
||||||
|
}
|
11
src/Ombi/.vscode/launch.json
vendored
11
src/Ombi/.vscode/launch.json
vendored
|
@ -1,20 +1,15 @@
|
||||||
{
|
{
|
||||||
// Use IntelliSense to find out which attributes exist for C# debugging
|
"version": "0.2.0",
|
||||||
// Use hover for the description of the existing attributes
|
"configurations": [
|
||||||
// For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md
|
|
||||||
"version": "0.2.0",
|
|
||||||
"configurations": [
|
|
||||||
{
|
{
|
||||||
"name": ".NET Core Launch (web)",
|
"name": ".NET Core Launch",
|
||||||
"type": "coreclr",
|
"type": "coreclr",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"preLaunchTask": "build",
|
"preLaunchTask": "build",
|
||||||
// If you have changed target frameworks, make sure to update the program path.
|
|
||||||
"program": "${workspaceRoot}/bin/Debug/netcoreapp2.0/Ombi.dll",
|
"program": "${workspaceRoot}/bin/Debug/netcoreapp2.0/Ombi.dll",
|
||||||
"args": [],
|
"args": [],
|
||||||
"cwd": "${workspaceRoot}",
|
"cwd": "${workspaceRoot}",
|
||||||
"stopAtEntry": false,
|
"stopAtEntry": false,
|
||||||
"internalConsoleOptions": "openOnSessionStart",
|
|
||||||
"launchBrowser": {
|
"launchBrowser": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"args": "${auto-detect-url}",
|
"args": "${auto-detect-url}",
|
||||||
|
|
10
src/Ombi/.vscode/settings.json
vendored
10
src/Ombi/.vscode/settings.json
vendored
|
@ -1,5 +1,13 @@
|
||||||
{
|
{
|
||||||
|
"files.exclude": {
|
||||||
|
"**/*.js": {"when": "$(basename).ts"},
|
||||||
|
"**/*.js.map": true,
|
||||||
|
"node_modules": true,
|
||||||
|
"obj": true,
|
||||||
|
"bin": true
|
||||||
|
},
|
||||||
|
"typescript.tsdk": "node_modules\\typescript\\lib",
|
||||||
"cSpell.words": [
|
"cSpell.words": [
|
||||||
"usermanagement"
|
"usermanagement"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
41
src/Ombi/.vscode/tasks.json
vendored
41
src/Ombi/.vscode/tasks.json
vendored
|
@ -1,15 +1,42 @@
|
||||||
{
|
{
|
||||||
"version": "0.1.0",
|
// See https://go.microsoft.com/fwlink/?LinkId=733558
|
||||||
"command": "dotnet",
|
// for the documentation about the tasks.json format
|
||||||
"isShellCommand": true,
|
"version": "2.0.0",
|
||||||
"args": [],
|
|
||||||
"tasks": [
|
"tasks": [
|
||||||
{
|
{
|
||||||
"taskName": "build",
|
"taskName": "restore",
|
||||||
|
"command": "npm",
|
||||||
|
"type": "shell",
|
||||||
"args": [
|
"args": [
|
||||||
"${workspaceRoot}/Ombi.csproj"
|
"run-script",
|
||||||
|
"restore"
|
||||||
|
],
|
||||||
|
"problemMatcher": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"taskName": "build",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "shell",
|
||||||
|
"args": [
|
||||||
|
"build"
|
||||||
|
],
|
||||||
|
"group": {
|
||||||
|
"isDefault": true,
|
||||||
|
"kind": "build"
|
||||||
|
},
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"taskName": "lint",
|
||||||
|
"type": "shell",
|
||||||
|
"command": "npm",
|
||||||
|
"args": [
|
||||||
|
"run",
|
||||||
|
"lint",
|
||||||
|
"--",
|
||||||
|
"--format",
|
||||||
|
"msbuild"
|
||||||
],
|
],
|
||||||
"isBuildCommand": true,
|
|
||||||
"problemMatcher": "$msCompile"
|
"problemMatcher": "$msCompile"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -9,6 +9,8 @@ import { enableProdMode } from "@angular/core";
|
||||||
import { platformBrowserDynamic } from "@angular/platform-browser-dynamic";
|
import { platformBrowserDynamic } from "@angular/platform-browser-dynamic";
|
||||||
import { AppModule } from "./app/app.module";
|
import { AppModule } from "./app/app.module";
|
||||||
|
|
||||||
|
declare var module: any;
|
||||||
|
|
||||||
if (module.hot) {
|
if (module.hot) {
|
||||||
module.hot.accept();
|
module.hot.accept();
|
||||||
module.hot.dispose(() => {
|
module.hot.dispose(() => {
|
||||||
|
|
|
@ -5,6 +5,8 @@ import "core-js/es6/string";
|
||||||
import "core-js/es7/reflect";
|
import "core-js/es7/reflect";
|
||||||
import "zone.js/dist/zone";
|
import "zone.js/dist/zone";
|
||||||
|
|
||||||
|
declare var module: any;
|
||||||
|
|
||||||
if (module.hot) {
|
if (module.hot) {
|
||||||
Error.stackTraceLimit = Infinity;
|
Error.stackTraceLimit = Infinity;
|
||||||
// tslint:disable:no-var-requires
|
// tslint:disable:no-var-requires
|
||||||
|
|
|
@ -45,7 +45,8 @@ namespace Ombi.Controllers.External
|
||||||
/// <param name="po">The pushover.</param>
|
/// <param name="po">The pushover.</param>
|
||||||
/// <param name="mm">The mattermost.</param>
|
/// <param name="mm">The mattermost.</param>
|
||||||
/// <param name="log">The logger.</param>
|
/// <param name="log">The logger.</param>
|
||||||
/// <param name="provider"></param>
|
/// <param name="provider">The email provider</param>
|
||||||
|
/// <param name="cpApi">The couch potato API</param>
|
||||||
public TesterController(INotificationService service, IDiscordNotification notification, IEmailNotification emailN,
|
public TesterController(INotificationService service, IDiscordNotification notification, IEmailNotification emailN,
|
||||||
IPushbulletNotification pushbullet, ISlackNotification slack, IPushoverNotification po, IMattermostNotification mm,
|
IPushbulletNotification pushbullet, ISlackNotification slack, IPushoverNotification po, IMattermostNotification mm,
|
||||||
IPlexApi plex, IEmbyApi emby, IRadarrApi radarr, ISonarrApi sonarr, ILogger<TesterController> log, IEmailProvider provider,
|
IPlexApi plex, IEmbyApi emby, IRadarrApi radarr, ISonarrApi sonarr, ILogger<TesterController> log, IEmailProvider provider,
|
||||||
|
|
|
@ -21,6 +21,10 @@
|
||||||
<NoWarn>1701;1702;1705;1591;</NoWarn>
|
<NoWarn>1701;1702;1705;1591;</NoWarn>
|
||||||
<DefineConstants>TRACE;RELEASE;NETCOREAPP2_0</DefineConstants>
|
<DefineConstants>TRACE;RELEASE;NETCOREAPP2_0</DefineConstants>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<Target Name="NpmCommandsDebug" Condition="'$(Configuration)'=='Debug'" AfterTargets="Build">
|
||||||
|
<Exec Command="npm run-script vendor" />
|
||||||
|
</Target>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<!-- Files not to show in IDE -->
|
<!-- Files not to show in IDE -->
|
||||||
|
|
|
@ -161,7 +161,8 @@ namespace Ombi
|
||||||
app.UseDeveloperExceptionPage();
|
app.UseDeveloperExceptionPage();
|
||||||
app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions
|
app.UseWebpackDevMiddleware(new WebpackDevMiddlewareOptions
|
||||||
{
|
{
|
||||||
HotModuleReplacement = true
|
HotModuleReplacement = true,
|
||||||
|
ConfigFile = "webpack.dev.js"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
/// <binding BeforeBuild='build' />
|
'use strict';
|
||||||
'use strict';
|
|
||||||
|
|
||||||
const gulp = require('gulp');
|
const gulp = require('gulp');
|
||||||
const run = require('gulp-run');
|
const run = require('gulp-run');
|
||||||
|
@ -25,35 +24,26 @@ function getEnvOptions() {
|
||||||
}
|
}
|
||||||
|
|
||||||
gulp.task('vendor', function () {
|
gulp.task('vendor', function () {
|
||||||
return run('webpack --config webpack.config.vendor.js' + getEnvOptions()).exec();
|
return run('webpack --config webpack.config.vendor.ts' + getEnvOptions()).exec();
|
||||||
});
|
});
|
||||||
|
|
||||||
gulp.task('main', function () {
|
gulp.task('main', function () {
|
||||||
return run('webpack --config webpack.config.js' + getEnvOptions()).exec();
|
return run('webpack --config webpack.config.ts' + getEnvOptions()).exec();
|
||||||
});
|
|
||||||
|
|
||||||
gulp.task('test_compile', function () {
|
|
||||||
return run('webpack boot-tests=./ClientApp/test/boot-tests.ts' + getEnvOptions()).exec();
|
|
||||||
});
|
|
||||||
|
|
||||||
gulp.task('test_run', function () {
|
|
||||||
return run('karma start ClientApp/test/karma.conf.js').exec();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
gulp.task('prod_var', function () {
|
gulp.task('prod_var', function () {
|
||||||
global.prod = true;
|
global.prod = true;
|
||||||
});
|
})
|
||||||
|
|
||||||
gulp.task('analyse_var', function () {
|
gulp.task('analyse_var', function () {
|
||||||
global.analyse = true;
|
global.analyse = true;
|
||||||
});
|
})
|
||||||
|
|
||||||
gulp.task('clean', function() {
|
gulp.task('clean', function() {
|
||||||
del.sync(outputDir, { force: true });
|
del.sync(outputDir, { force: true });
|
||||||
});
|
});
|
||||||
|
|
||||||
gulp.task('test', callback => runSequence('test_compile', 'test_run'));
|
|
||||||
gulp.task('build', callback => runSequence('vendor', 'main', callback));
|
gulp.task('build', callback => runSequence('vendor', 'main', callback));
|
||||||
gulp.task('analyse', callback => runSequence('analyse_var', 'build'));
|
gulp.task('analyse', callback => runSequence('analyse_var', 'build'));
|
||||||
gulp.task('full', callback => runSequence('clean', 'build'));
|
gulp.task('full', callback => runSequence('clean', 'build'));
|
||||||
gulp.task('publish', callback => runSequence('prod_var', 'build'));
|
gulp.task('publish', callback => runSequence('prod_var', 'build'));
|
1159
src/Ombi/package-lock.json
generated
1159
src/Ombi/package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
@ -5,10 +5,11 @@
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"vendor": "gulp vendor",
|
"vendor": "gulp vendor",
|
||||||
"publish": "gulp publish",
|
"publish": "gulp publish",
|
||||||
"lint": "tslint ClientApp/**/*.ts"
|
"lint": "tslint ClientApp/**/*.ts",
|
||||||
|
"restore": "dotnet restore && npm install"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@angular/animations": "4.4.1",
|
"@angular/animations": "^4.4.6",
|
||||||
"@angular/cdk": "^2.0.0-beta.12",
|
"@angular/cdk": "^2.0.0-beta.12",
|
||||||
"@angular/common": "^4.4.6",
|
"@angular/common": "^4.4.6",
|
||||||
"@angular/compiler": "^4.4.6",
|
"@angular/compiler": "^4.4.6",
|
||||||
|
@ -22,8 +23,10 @@
|
||||||
"@angular/router": "^4.4.6",
|
"@angular/router": "^4.4.6",
|
||||||
"@ng-bootstrap/ng-bootstrap": "^1.0.0-beta.5",
|
"@ng-bootstrap/ng-bootstrap": "^1.0.0-beta.5",
|
||||||
"@types/core-js": "^0.9.43",
|
"@types/core-js": "^0.9.43",
|
||||||
|
"@types/extract-text-webpack-plugin": "^3.0.0",
|
||||||
"@types/intro.js": "^2.4.3",
|
"@types/intro.js": "^2.4.3",
|
||||||
"@types/node": "^8.0.46",
|
"@types/node": "^8.0.46",
|
||||||
|
"@types/webpack": "^3.0.13",
|
||||||
"angular2-jwt": "^0.2.3",
|
"angular2-jwt": "^0.2.3",
|
||||||
"angular2-moment": "^1.7.0",
|
"angular2-moment": "^1.7.0",
|
||||||
"angular2-template-loader": "^0.6.2",
|
"angular2-template-loader": "^0.6.2",
|
||||||
|
@ -35,10 +38,10 @@
|
||||||
"css": "^2.2.1",
|
"css": "^2.2.1",
|
||||||
"css-loader": "^0.28.7",
|
"css-loader": "^0.28.7",
|
||||||
"del": "^3.0.0",
|
"del": "^3.0.0",
|
||||||
"event-source-polyfill": "^0.0.9",
|
"event-source-polyfill": "^0.0.11",
|
||||||
"expose-loader": "^0.7.3",
|
"expose-loader": "^0.7.3",
|
||||||
"extract-text-webpack-plugin": "^3.0.1",
|
"extract-text-webpack-plugin": "^3.0.1",
|
||||||
"file-loader": "^0.11.2",
|
"file-loader": "^1.1.5",
|
||||||
"font-awesome": "^4.7.0",
|
"font-awesome": "^4.7.0",
|
||||||
"gulp": "^3.9.1",
|
"gulp": "^3.9.1",
|
||||||
"gulp-run": "^1.7.1",
|
"gulp-run": "^1.7.1",
|
||||||
|
@ -49,7 +52,7 @@
|
||||||
"ng2-cookies": "^1.0.12",
|
"ng2-cookies": "^1.0.12",
|
||||||
"ng2-dragula": "1.5.0",
|
"ng2-dragula": "1.5.0",
|
||||||
"ngx-clipboard": "^8.1.1",
|
"ngx-clipboard": "^8.1.1",
|
||||||
"ngx-infinite-scroll": "^0.5.2",
|
"ngx-infinite-scroll": "^0.6.1",
|
||||||
"node-sass": "^4.5.3",
|
"node-sass": "^4.5.3",
|
||||||
"npm": "^5.5.1",
|
"npm": "^5.5.1",
|
||||||
"pace-progress": "^1.0.2",
|
"pace-progress": "^1.0.2",
|
||||||
|
@ -58,14 +61,15 @@
|
||||||
"run-sequence": "^2.2.0",
|
"run-sequence": "^2.2.0",
|
||||||
"rxjs": "^5.5.0",
|
"rxjs": "^5.5.0",
|
||||||
"sass-loader": "^6.0.6",
|
"sass-loader": "^6.0.6",
|
||||||
"style-loader": "^0.18.2",
|
"style-loader": "^0.19.0",
|
||||||
"to-string-loader": "^1.1.5",
|
"to-string-loader": "^1.1.5",
|
||||||
|
"ts-node": "^3.3.0",
|
||||||
"tslint": "^5.8.0",
|
"tslint": "^5.8.0",
|
||||||
"tslint-language-service": "^0.9.6",
|
"tslint-language-service": "^0.9.6",
|
||||||
"typescript": "^2.5.3",
|
"typescript": "^2.5.3",
|
||||||
"uglify-es": "^3.1.5",
|
"uglify-es": "^3.1.5",
|
||||||
"uglifyjs-webpack-plugin": "^1.0.1",
|
"uglifyjs-webpack-plugin": "^1.0.1",
|
||||||
"url-loader": "^0.5.9",
|
"url-loader": "^0.6.2",
|
||||||
"webpack": "^3.8.1",
|
"webpack": "^3.8.1",
|
||||||
"webpack-bundle-analyzer": "^2.9.0",
|
"webpack-bundle-analyzer": "^2.9.0",
|
||||||
"webpack-hot-middleware": "^2.20.0",
|
"webpack-hot-middleware": "^2.20.0",
|
||||||
|
@ -81,6 +85,6 @@
|
||||||
"karma-chrome-launcher": "2.2.0",
|
"karma-chrome-launcher": "2.2.0",
|
||||||
"karma-cli": "1.0.1",
|
"karma-cli": "1.0.1",
|
||||||
"karma-jasmine": "1.1.0",
|
"karma-jasmine": "1.1.0",
|
||||||
"karma-webpack": "2.0.4"
|
"karma-webpack": "2.0.5"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
"emitDecoratorMetadata": true,
|
"emitDecoratorMetadata": true,
|
||||||
"experimentalDecorators": true,
|
"experimentalDecorators": true,
|
||||||
"skipLibCheck": true,
|
"skipLibCheck": true,
|
||||||
|
"noEmit": true,
|
||||||
"plugins": [
|
"plugins": [
|
||||||
{
|
{
|
||||||
"name": "tslint-language-service",
|
"name": "tslint-language-service",
|
||||||
|
|
11
src/Ombi/typings/globals/globals.d.ts
vendored
11
src/Ombi/typings/globals/globals.d.ts
vendored
|
@ -5,12 +5,5 @@ declare var require: any;
|
||||||
declare var localStorage: any;
|
declare var localStorage: any;
|
||||||
declare var introJs: any;
|
declare var introJs: any;
|
||||||
|
|
||||||
declare module "*.css" {
|
declare module "webpack-bundle-analyzer";
|
||||||
let string: string;
|
declare module "uglifyjs-webpack-plugin";
|
||||||
export default string;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare module "*.html" {
|
|
||||||
let string: string;
|
|
||||||
export default string;
|
|
||||||
}
|
|
3
src/Ombi/typings/index.d.ts
vendored
3
src/Ombi/typings/index.d.ts
vendored
|
@ -1,2 +1 @@
|
||||||
/// <reference path="globals/globals.d.ts" />
|
/// <reference path="globals/globals.d.ts" />
|
||||||
/// <reference path="../node_modules/@types/intro.js/index.d.ts" />
|
|
|
@ -1,59 +0,0 @@
|
||||||
const path = require('path');
|
|
||||||
const webpack = require('webpack');
|
|
||||||
const CheckerPlugin = require('awesome-typescript-loader').CheckerPlugin;
|
|
||||||
const ExtractTextPlugin = require("extract-text-webpack-plugin");
|
|
||||||
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
|
|
||||||
const UglifyJSPlugin = require('uglifyjs-webpack-plugin');
|
|
||||||
|
|
||||||
module.exports = function (env) {
|
|
||||||
const extractCSS = new ExtractTextPlugin('main.css');
|
|
||||||
const prod = env && env.prod;
|
|
||||||
console.log(prod ? 'Production' : 'Dev' + ' main build');
|
|
||||||
const analyse = env && env.analyse;
|
|
||||||
if (analyse) { console.log("Analysing build"); }
|
|
||||||
const cssLoader = prod ? 'css-loader?minimize' : 'css-loader';
|
|
||||||
const outputDir = './wwwroot/dist';
|
|
||||||
const bundleConfig = {
|
|
||||||
entry: { 'main': './ClientApp/main.ts' },
|
|
||||||
stats: { modules: false },
|
|
||||||
context: __dirname,
|
|
||||||
resolve: { extensions: ['.ts', '.js'] },
|
|
||||||
devtool: prod ? 'source-map' : 'eval-source-map',
|
|
||||||
output: {
|
|
||||||
filename: '[name].js',
|
|
||||||
publicPath: '/dist/',
|
|
||||||
path: path.join(__dirname, outputDir)
|
|
||||||
},
|
|
||||||
module: {
|
|
||||||
rules: [
|
|
||||||
{ test: /\.ts$/, include: /ClientApp/, use: ['awesome-typescript-loader?silent=true', 'angular2-template-loader'] },
|
|
||||||
{ test: /\.html$/, use: 'html-loader?minimize=false' },
|
|
||||||
{ test: /\.css$/, use: ['to-string-loader', cssLoader] },
|
|
||||||
{ test: /\.scss$/, include: /ClientApp(\\|\/)app/, use: ["to-string-loader", cssLoader, "sass-loader"] },
|
|
||||||
{ test: /\.scss$/, include: /ClientApp(\\|\/)styles/, use: ["style-loader", cssLoader, "sass-loader"] },
|
|
||||||
{ test: /\.(png|jpg|jpeg|gif|svg)$/, use: 'url-loader?limit=25000' }
|
|
||||||
]
|
|
||||||
},
|
|
||||||
plugins: [
|
|
||||||
new CheckerPlugin(),
|
|
||||||
extractCSS,
|
|
||||||
new webpack.DllReferencePlugin({
|
|
||||||
context: __dirname,
|
|
||||||
manifest: require(path.join(__dirname, outputDir, 'vendor-manifest.json'))
|
|
||||||
})
|
|
||||||
].concat(prod ? [
|
|
||||||
// Plugins that apply in production builds only
|
|
||||||
new UglifyJSPlugin()
|
|
||||||
] : [
|
|
||||||
// Plugins that apply in development builds only
|
|
||||||
]).concat(analyse ? [
|
|
||||||
new BundleAnalyzerPlugin({
|
|
||||||
analyzerMode: 'static',
|
|
||||||
reportFilename: 'main.html',
|
|
||||||
openAnalyzer: false
|
|
||||||
})
|
|
||||||
] : [])
|
|
||||||
};
|
|
||||||
|
|
||||||
return bundleConfig;
|
|
||||||
};
|
|
57
src/Ombi/webpack.config.ts
Normal file
57
src/Ombi/webpack.config.ts
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
import { CheckerPlugin } from "awesome-typescript-loader";
|
||||||
|
import * as path from "path";
|
||||||
|
import * as UglifyJSPlugin from "uglifyjs-webpack-plugin";
|
||||||
|
import { BundleAnalyzerPlugin } from "webpack-bundle-analyzer";
|
||||||
|
|
||||||
|
import * as webpack from "webpack";
|
||||||
|
|
||||||
|
module.exports = (env: any) => {
|
||||||
|
const prod = env && env.prod as boolean;
|
||||||
|
console.log(prod ? "Production" : "Dev" + " main build");
|
||||||
|
const analyse = env && env.analyse as boolean;
|
||||||
|
if (analyse) { console.log("Analysing build"); }
|
||||||
|
const cssLoader = prod ? "css-loader?-url&minimize" : "css-loader?-url";
|
||||||
|
const outputDir = "./wwwroot/dist";
|
||||||
|
const bundleConfig: webpack.Configuration = {
|
||||||
|
entry: { main: "./ClientApp/main.ts" },
|
||||||
|
stats: { modules: false },
|
||||||
|
context: __dirname,
|
||||||
|
resolve: { extensions: [".ts", ".js"] },
|
||||||
|
devtool: prod ? "source-map" : "eval-source-map",
|
||||||
|
output: {
|
||||||
|
filename: "[name].js",
|
||||||
|
publicPath: "/dist/",
|
||||||
|
path: path.join(__dirname, outputDir),
|
||||||
|
},
|
||||||
|
module: {
|
||||||
|
rules: [
|
||||||
|
{ test: /\.ts$/, include: /ClientApp/, use: ["awesome-typescript-loader?silent=true", "angular2-template-loader"] },
|
||||||
|
{ test: /\.html$/, use: "html-loader?minimize=false" },
|
||||||
|
{ test: /\.css$/, use: ["to-string-loader", cssLoader] },
|
||||||
|
{ test: /\.scss$/, include: /ClientApp(\\|\/)app/, use: ["to-string-loader", cssLoader, "sass-loader"] },
|
||||||
|
{ test: /\.scss$/, include: /ClientApp(\\|\/)styles/, use: ["style-loader", cssLoader, "sass-loader"] },
|
||||||
|
{ test: /\.(png|jpg|jpeg|gif|svg)$/, use: "url-loader?limit=25000" },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
new CheckerPlugin(),
|
||||||
|
new webpack.DllReferencePlugin({
|
||||||
|
context: __dirname,
|
||||||
|
manifest: require(path.join(__dirname, outputDir, "vendor-manifest.json")),
|
||||||
|
}),
|
||||||
|
].concat(prod ? [
|
||||||
|
// Plugins that apply in production builds only
|
||||||
|
new UglifyJSPlugin({ sourceMap: true }),
|
||||||
|
] : [
|
||||||
|
// Plugins that apply in development builds only
|
||||||
|
]).concat(analyse ? [
|
||||||
|
new BundleAnalyzerPlugin({
|
||||||
|
analyzerMode: "static",
|
||||||
|
reportFilename: "main.html",
|
||||||
|
openAnalyzer: false,
|
||||||
|
}),
|
||||||
|
] : []),
|
||||||
|
};
|
||||||
|
|
||||||
|
return bundleConfig;
|
||||||
|
};
|
|
@ -1,98 +0,0 @@
|
||||||
const path = require('path');
|
|
||||||
const webpack = require('webpack');
|
|
||||||
const ExtractTextPlugin = require('extract-text-webpack-plugin');
|
|
||||||
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
|
|
||||||
const UglifyJSPlugin = require('uglifyjs-webpack-plugin');
|
|
||||||
|
|
||||||
module.exports = function (env) {
|
|
||||||
const extractCSS = new ExtractTextPlugin('vendor.css');
|
|
||||||
const prod = env && env.prod;
|
|
||||||
console.log(prod ? 'Production' : 'Dev' + ' vendor build');
|
|
||||||
const analyse = env && env.analyse;
|
|
||||||
if (analyse) { console.log("Analysing build") };
|
|
||||||
const outputDir = './wwwroot/dist';
|
|
||||||
const bundleConfig = {
|
|
||||||
stats: { modules: false },
|
|
||||||
resolve: { extensions: ['.js'] },
|
|
||||||
module: {
|
|
||||||
rules: [
|
|
||||||
{ test: /\.(png|woff|woff2|eot|ttf|svg|gif)(\?|$)/, use: 'url-loader?limit=100000' },
|
|
||||||
{ test: /\.css(\?|$)/, use: extractCSS.extract({ use: prod ? 'css-loader?minimize' : 'css-loader' }) },
|
|
||||||
{ test: /\.scss(\?|$)/, use: extractCSS.extract({ use: [prod ? 'css-loader?minimize' : 'css-loader', 'sass-loader'] }) }
|
|
||||||
]
|
|
||||||
},
|
|
||||||
entry: {
|
|
||||||
vendor: [
|
|
||||||
'@angular/animations',
|
|
||||||
'@angular/common',
|
|
||||||
'@angular/compiler',
|
|
||||||
'@angular/core',
|
|
||||||
'@angular/forms',
|
|
||||||
'@angular/http',
|
|
||||||
'@angular/platform-browser',
|
|
||||||
'@angular/platform-browser-dynamic',
|
|
||||||
'@angular/router',
|
|
||||||
'@angular/material',
|
|
||||||
'primeng/resources/primeng.min.css',
|
|
||||||
'primeng/resources/themes/omega/theme.css',
|
|
||||||
'@angular/material/prebuilt-themes/deeppurple-amber.css',
|
|
||||||
'event-source-polyfill',
|
|
||||||
'jquery',
|
|
||||||
'zone.js',
|
|
||||||
'primeng/primeng',
|
|
||||||
'reflect-metadata',
|
|
||||||
'core-js',
|
|
||||||
'angular2-jwt',
|
|
||||||
'bootstrap/dist/js/bootstrap',
|
|
||||||
'font-awesome/scss/font-awesome.scss',
|
|
||||||
'pace-progress',
|
|
||||||
'pace-progress/themes/orange/pace-theme-flash.css',
|
|
||||||
'intro.js-mit/intro.js',
|
|
||||||
'intro.js-mit/introjs.css',
|
|
||||||
'ngx-clipboard',
|
|
||||||
'bootswatch/superhero/bootstrap.min.css',
|
|
||||||
'style-loader',
|
|
||||||
'ng2-cookies',
|
|
||||||
//'ng2-dragula',
|
|
||||||
//'dragula/dist/dragula.min.css'
|
|
||||||
]
|
|
||||||
},
|
|
||||||
output: {
|
|
||||||
publicPath: '/dist/',
|
|
||||||
filename: '[name].js',
|
|
||||||
library: '[name]_[hash]',
|
|
||||||
path: path.join(__dirname, outputDir)
|
|
||||||
},
|
|
||||||
node: {
|
|
||||||
fs: "empty",
|
|
||||||
},
|
|
||||||
resolve: {
|
|
||||||
alias: {
|
|
||||||
pace: 'pace-progress'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
plugins: [
|
|
||||||
new webpack.ProvidePlugin({ $: 'jquery', jQuery: 'jquery', Hammer: 'hammerjs/hammer' }), // Global identifiers
|
|
||||||
new webpack.ContextReplacementPlugin(/\@angular\b.*\b(bundles|linker)/, path.join(__dirname, './ClientApp')), // Workaround for https://github.com/angular/angular/issues/11580
|
|
||||||
new webpack.ContextReplacementPlugin(/angular(\\|\/)core(\\|\/)@angular/, path.join(__dirname, './ClientApp')), // Workaround for https://github.com/angular/angular/issues/14898
|
|
||||||
new webpack.IgnorePlugin(/^vertx$/), // Workaround for https://github.com/stefanpenner/es6-promise/issues/100
|
|
||||||
extractCSS,
|
|
||||||
new webpack.DllPlugin({
|
|
||||||
path: path.join(__dirname, outputDir, '[name]-manifest.json'),
|
|
||||||
name: '[name]_[hash]'
|
|
||||||
})
|
|
||||||
].concat(prod ? [
|
|
||||||
// Plugins that apply in production builds only
|
|
||||||
new UglifyJSPlugin()
|
|
||||||
] : [
|
|
||||||
// Plugins that apply in development builds only
|
|
||||||
]).concat(analyse ? [
|
|
||||||
new BundleAnalyzerPlugin({
|
|
||||||
analyzerMode: 'static',
|
|
||||||
reportFilename: 'vendor.html',
|
|
||||||
openAnalyzer: false
|
|
||||||
})
|
|
||||||
] : [])
|
|
||||||
};
|
|
||||||
return bundleConfig;
|
|
||||||
}
|
|
103
src/Ombi/webpack.config.vendor.ts
Normal file
103
src/Ombi/webpack.config.vendor.ts
Normal file
|
@ -0,0 +1,103 @@
|
||||||
|
import * as ExtractTextPlugin from "extract-text-webpack-plugin";
|
||||||
|
import * as path from "path";
|
||||||
|
import * as UglifyJSPlugin from "uglifyjs-webpack-plugin";
|
||||||
|
import * as webpack from "webpack";
|
||||||
|
import { BundleAnalyzerPlugin } from "webpack-bundle-analyzer";
|
||||||
|
|
||||||
|
module.exports = (env: any) => {
|
||||||
|
const extractCSS = new ExtractTextPlugin("vendor.css");
|
||||||
|
const prod = env && env.prod as boolean;
|
||||||
|
console.log(prod ? "Production" : "Dev" + " vendor build");
|
||||||
|
const analyse = env && env.analyse as boolean;
|
||||||
|
if (analyse) { console.log("Analysing build"); }
|
||||||
|
const outputDir = "./wwwroot/dist";
|
||||||
|
const bundleConfig = {
|
||||||
|
stats: { modules: false },
|
||||||
|
resolve: {
|
||||||
|
extensions: [".js"],
|
||||||
|
alias: {
|
||||||
|
pace: "pace-progress",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
module: {
|
||||||
|
rules: [
|
||||||
|
{ test: /\.(png|woff|woff2|eot|ttf|svg|gif)(\?|$)/, use: "url-loader?limit=100000" },
|
||||||
|
{ test: /\.css(\?|$)/, use: extractCSS.extract({ use: prod ? "css-loader?minimize" : "css-loader" }) },
|
||||||
|
{ test: /\.scss(\?|$)/, use: extractCSS.extract({ use: [prod ? "css-loader?minimize" : "css-loader", "sass-loader"] }) },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
entry: {
|
||||||
|
vendor: [
|
||||||
|
"pace-progress/themes/orange/pace-theme-flash.css",
|
||||||
|
"primeng/resources/primeng.min.css",
|
||||||
|
"@angular/material/prebuilt-themes/deeppurple-amber.css",
|
||||||
|
"font-awesome/scss/font-awesome.scss",
|
||||||
|
"intro.js-mit/introjs.css",
|
||||||
|
"bootswatch/superhero/bootstrap.min.css",
|
||||||
|
|
||||||
|
"@angular/animations",
|
||||||
|
"@angular/common",
|
||||||
|
"@angular/compiler",
|
||||||
|
"@angular/core",
|
||||||
|
"@angular/forms",
|
||||||
|
"@angular/http",
|
||||||
|
"@angular/platform-browser",
|
||||||
|
"@angular/platform-browser/animations",
|
||||||
|
"@angular/platform-browser-dynamic",
|
||||||
|
"@angular/router",
|
||||||
|
"@angular/material",
|
||||||
|
"@angular/cdk",
|
||||||
|
"pace-progress",
|
||||||
|
"primeng/primeng",
|
||||||
|
"jquery",
|
||||||
|
"zone.js",
|
||||||
|
"reflect-metadata",
|
||||||
|
"core-js",
|
||||||
|
"rxjs",
|
||||||
|
"css-loader/lib/css-base",
|
||||||
|
"core-js/es6/string",
|
||||||
|
"core-js/es6/array",
|
||||||
|
"core-js/es6/object",
|
||||||
|
"core-js/es7/reflect",
|
||||||
|
"hammerjs",
|
||||||
|
"event-source-polyfill",
|
||||||
|
"bootstrap/dist/js/bootstrap",
|
||||||
|
"intro.js-mit/intro.js",
|
||||||
|
"ngx-clipboard",
|
||||||
|
"angular2-jwt",
|
||||||
|
"ng2-cookies",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
output: {
|
||||||
|
publicPath: "/dist/",
|
||||||
|
filename: "[name].js",
|
||||||
|
library: "[name]_[hash]",
|
||||||
|
path: path.join(__dirname, outputDir),
|
||||||
|
},
|
||||||
|
node: {
|
||||||
|
fs: "empty",
|
||||||
|
},
|
||||||
|
plugins: [
|
||||||
|
new webpack.ProvidePlugin({ $: "jquery", jQuery: "jquery", Hammer: "hammerjs/hammer" }), // Global identifiers
|
||||||
|
new webpack.ContextReplacementPlugin(/\@angular\b.*\b(bundles|linker)/, path.join(__dirname, "./ClientApp")), // Workaround for https://github.com/angular/angular/issues/11580
|
||||||
|
new webpack.ContextReplacementPlugin(/angular(\\|\/)core(\\|\/)@angular/, path.join(__dirname, "./ClientApp")), // Workaround for https://github.com/angular/angular/issues/14898
|
||||||
|
extractCSS,
|
||||||
|
new webpack.DllPlugin({
|
||||||
|
path: path.join(__dirname, outputDir, "[name]-manifest.json"),
|
||||||
|
name: "[name]_[hash]",
|
||||||
|
}),
|
||||||
|
].concat(prod ? [
|
||||||
|
// Plugins that apply in production builds only
|
||||||
|
new UglifyJSPlugin(),
|
||||||
|
] : [
|
||||||
|
// Plugins that apply in development builds only
|
||||||
|
]).concat(analyse ? [
|
||||||
|
new BundleAnalyzerPlugin({
|
||||||
|
analyzerMode: "static",
|
||||||
|
reportFilename: "vendor.html",
|
||||||
|
openAnalyzer: false,
|
||||||
|
}),
|
||||||
|
] : []),
|
||||||
|
};
|
||||||
|
return bundleConfig;
|
||||||
|
};
|
4
src/Ombi/webpack.dev.js
Normal file
4
src/Ombi/webpack.dev.js
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
// https://github.com/aspnet/JavaScriptServices/issues/1046
|
||||||
|
|
||||||
|
require('ts-node/register')
|
||||||
|
module.exports = require("./webpack.config.ts");
|
Loading…
Add table
Add a link
Reference in a new issue