From 137c100bbffcadcdeeb35d4dceef8d22b943195f Mon Sep 17 00:00:00 2001 From: Eugene Pankov Date: Wed, 12 Apr 2017 12:12:57 +0200 Subject: [PATCH] webpack --- .gitignore | 1 + app/src/entry.ts | 2 +- app/webpack.config.js | 71 +++++++++++++++++ package.json | 2 + terminus-clickable-links/webpack.config.js | 14 +++- .../webpack.config.js | 19 ++++- terminus-core/tsconfig.json | 6 +- terminus-core/webpack.config.js | 19 ++++- terminus-settings/tsconfig.json | 6 +- terminus-settings/webpack.config.js | 21 ++++- terminus-terminal/tsconfig.json | 6 +- terminus-terminal/webpack.config.js | 19 ++++- tsconfig.json | 5 +- webpack.config.js | 77 ++----------------- 14 files changed, 164 insertions(+), 104 deletions(-) create mode 100644 app/webpack.config.js diff --git a/.gitignore b/.gitignore index 8930b9ab..0b100f4b 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ driver/obj coverage .nyc_output +npm-debug.log diff --git a/app/src/entry.ts b/app/src/entry.ts index ba220ad3..59e9dec9 100644 --- a/app/src/entry.ts +++ b/app/src/entry.ts @@ -8,7 +8,7 @@ import 'jquery' // Always land on the start view location.hash = '' -import { RootModule } from 'app.module' +import { RootModule } from './app.module' import { enableProdMode } from '@angular/core' import { platformBrowserDynamic } from '@angular/platform-browser-dynamic' diff --git a/app/webpack.config.js b/app/webpack.config.js new file mode 100644 index 00000000..408c6bb6 --- /dev/null +++ b/app/webpack.config.js @@ -0,0 +1,71 @@ +const path = require('path') +const webpack = require('webpack') + +module.exports = { + name: 'terminus', + target: 'node', + entry: { + 'index.ignore': 'file-loader?name=index.html!pug-html-loader!' + path.resolve(__dirname, './index.pug'), + 'preload': path.resolve(__dirname, 'src/entry.preload.ts'), + 'bundle': path.resolve(__dirname, 'src/entry.ts'), + }, + context: __dirname, + devtool: 'source-map', + output: { + path: path.join(__dirname, 'assets', 'webpack'), + pathinfo: true, + //publicPath: 'assets/webpack/', + filename: '[name].js' + }, + resolve: { + modules: ['src/', 'node_modules', '../node_modules', 'assets/'].map(x => path.join(__dirname, x)), + extensions: ['.ts', '.js'], + }, + module: { + loaders: [ + { + test: /\.ts$/, + use: 'awesome-typescript-loader', + exclude: [/node_modules/] + }, + { + test: /\.scss$/, + use: ['style-loader', 'css-loader', 'sass-loader'], + }, + { + test: /\.css$/, + use: ['style-loader', 'css-loader', 'sass-loader'], + }, + { + test: /\.(png|svg)$/, + loader: "file-loader", + options: { + name: 'images/[name].[hash:8].[ext]' + } + }, + { + test: /\.(ttf|eot|otf|woff|woff2)(\?v=[0-9]\.[0-9]\.[0-9])?$/, + loader: "file-loader", + options: { + name: 'fonts/[name].[hash:8].[ext]' + } + } + ] + }, + externals: { + '@angular/core': 'commonjs @angular/core', + '@angular/compiler': 'commonjs @angular/compiler', + '@angular/platform-browser': 'commonjs @angular/platform-browser', + '@angular/platform-browser-dynamic': 'commonjs @angular/platform-browser-dynamic', + '@angular/forms': 'commonjs @angular/forms', + '@angular/common': 'commonjs @angular/common', + '@ng-bootstrap/ng-bootstrap': 'commonjs @ng-bootstrap/ng-bootstrap', + 'rxjs': 'commonjs rxjs', + 'zone.js': 'commonjs zone.js', + }, + plugins: [ + new webpack.ProvidePlugin({ + "window.jQuery": "jquery", + }), + ] +} diff --git a/package.json b/package.json index 8b6a78e2..96bdec4e 100644 --- a/package.json +++ b/package.json @@ -58,6 +58,8 @@ } }, "scripts": { + "build": "webpack --progress --color", + "watch": "webpack --progress --color --watch", "pack": "build --dir", "postinstall": "install-app-deps", "dist": "build" diff --git a/terminus-clickable-links/webpack.config.js b/terminus-clickable-links/webpack.config.js index cda83f7f..f238b09e 100644 --- a/terminus-clickable-links/webpack.config.js +++ b/terminus-clickable-links/webpack.config.js @@ -1,15 +1,19 @@ +const path = require('path') + module.exports = { target: 'node', entry: 'src/index.ts', devtool: 'source-map', + context: __dirname, output: { - filename: './dist/index.js', + path: path.resolve(__dirname, 'dist'), + filename: 'index.js', pathinfo: true, libraryTarget: 'umd', devtoolModuleFilenameTemplate: 'webpack-terminus-clickable-links:///[resource-path]', }, resolve: { - modules: ['.', 'node_modules', '../app/node_modules'], + modules: ['.', 'src', 'node_modules', '../app/node_modules'].map(x => path.join(__dirname, x)), extensions: ['.ts', '.js'], }, module: { @@ -17,6 +21,12 @@ module.exports = { { test: /\.ts$/, loader: 'awesome-typescript-loader', + query: { + paths: { + "terminus-*": [path.resolve(__dirname, '../terminus-*')], + "*": [path.resolve(__dirname, '../app/node_modules/*')], + } + } }, ] }, diff --git a/terminus-community-color-schemes/webpack.config.js b/terminus-community-color-schemes/webpack.config.js index 1c65d2ba..d98dc76f 100644 --- a/terminus-community-color-schemes/webpack.config.js +++ b/terminus-community-color-schemes/webpack.config.js @@ -1,20 +1,33 @@ +const path = require('path') + module.exports = { target: 'node', entry: 'src/index.ts', devtool: 'source-map', + context: __dirname, output: { - filename: './dist/index.js', + path: path.resolve(__dirname, 'dist'), + filename: 'index.js', pathinfo: true, libraryTarget: 'umd', devtoolModuleFilenameTemplate: 'webpack-terminus-community-color-schemes:///[resource-path]', }, resolve: { - modules: ['.', 'node_modules', '../app/node_modules'], + modules: ['.', 'src', 'node_modules', '../app/node_modules'].map(x => path.join(__dirname, x)), extensions: ['.ts', '.js'], }, module: { loaders: [ - { test: /\.ts$/, loader: 'awesome-typescript-loader' }, + { + test: /\.ts$/, + loader: 'awesome-typescript-loader', + options: { + paths: { + "terminus-*": [path.resolve(__dirname, '../terminus-*')], + "*": [path.resolve(__dirname, '../app/node_modules/*')], + } + } + }, { test: /\/schemes\//, loader: "raw-loader" }, ] }, diff --git a/terminus-core/tsconfig.json b/terminus-core/tsconfig.json index e5ab73eb..154f087d 100644 --- a/terminus-core/tsconfig.json +++ b/terminus-core/tsconfig.json @@ -20,11 +20,7 @@ "dom", "es2015", "es7" - ], - "paths": { - "*": ["../../app/node_modules/*"], - "terminus-*": ["../../terminus-*"] - } + ] }, "include": [ "src" diff --git a/terminus-core/webpack.config.js b/terminus-core/webpack.config.js index 3c2b200d..d0836b86 100644 --- a/terminus-core/webpack.config.js +++ b/terminus-core/webpack.config.js @@ -1,20 +1,33 @@ +const path = require('path') + module.exports = { target: 'node', entry: 'src/index.ts', devtool: 'source-map', + context: __dirname, output: { - filename: './dist/index.js', + path: path.resolve(__dirname, 'dist'), + filename: 'index.js', pathinfo: true, libraryTarget: 'umd', devtoolModuleFilenameTemplate: 'webpack-terminus-core:///[resource-path]', }, resolve: { - modules: ['.', 'src', 'node_modules', '../app/node_modules'], + modules: ['.', 'src', 'node_modules', '../app/node_modules'].map(x => path.join(__dirname, x)), extensions: ['.ts', '.js'], }, module: { loaders: [ - { test: /\.ts$/, use: 'awesome-typescript-loader' }, + { + test: /\.ts$/, + loader: 'awesome-typescript-loader', + options: { + paths: { + "terminus-*": [path.resolve(__dirname, '../terminus-*')], + "*": [path.resolve(__dirname, '../app/node_modules/*')], + } + } + }, { test: /\.pug$/, use: ['apply-loader', 'pug-loader'] }, { test: /\.scss$/, use: ['style-loader', 'css-loader', 'sass-loader'], exclude: /components\// }, { test: /\.scss$/, use: ['to-string-loader', 'css-loader', 'sass-loader'], include: /components\// }, diff --git a/terminus-settings/tsconfig.json b/terminus-settings/tsconfig.json index e5ab73eb..154f087d 100644 --- a/terminus-settings/tsconfig.json +++ b/terminus-settings/tsconfig.json @@ -20,11 +20,7 @@ "dom", "es2015", "es7" - ], - "paths": { - "*": ["../../app/node_modules/*"], - "terminus-*": ["../../terminus-*"] - } + ] }, "include": [ "src" diff --git a/terminus-settings/webpack.config.js b/terminus-settings/webpack.config.js index 38588f7e..d5656a9e 100644 --- a/terminus-settings/webpack.config.js +++ b/terminus-settings/webpack.config.js @@ -1,20 +1,33 @@ +const path = require('path') + module.exports = { target: 'node', entry: 'src/index.ts', devtool: 'source-map', + context: __dirname, output: { - filename: './dist/index.js', + path: path.resolve(__dirname, 'dist'), + filename: 'index.js', pathinfo: true, - libraryTarget: 'commonjs', + libraryTarget: 'umd', devtoolModuleFilenameTemplate: 'webpack-terminus-settings:///[resource-path]', }, resolve: { - modules: ['.', 'node_modules', '../app/node_modules'], + modules: ['.', 'src', 'node_modules', '../app/node_modules'].map(x => path.join(__dirname, x)), extensions: ['.ts', '.js'], }, module: { loaders: [ - { test: /\.ts$/, use: 'awesome-typescript-loader', exclude: [/node_modules/] }, + { + test: /\.ts$/, + loader: 'awesome-typescript-loader', + options: { + paths: { + "terminus-*": [path.resolve(__dirname, '../terminus-*')], + "*": [path.resolve(__dirname, '../app/node_modules/*')], + } + } + }, { test: /schemes\/.*$/, use: "raw-loader" }, { test: /\.pug$/, use: ['apply-loader', 'pug-loader'] }, { test: /\.scss$/, use: ['to-string-loader', 'css-loader', 'sass-loader'] }, diff --git a/terminus-terminal/tsconfig.json b/terminus-terminal/tsconfig.json index 993ae363..5cb388c6 100644 --- a/terminus-terminal/tsconfig.json +++ b/terminus-terminal/tsconfig.json @@ -20,11 +20,7 @@ "dom", "es2015", "es7" - ], - "paths": { - "*": ["../../app/node_modules/*"], - "terminus-*": ["../../terminus-*"] - } + ] }, "compileOnSave": false, "exclude": [ diff --git a/terminus-terminal/webpack.config.js b/terminus-terminal/webpack.config.js index 9f43f6ac..a52b6a61 100644 --- a/terminus-terminal/webpack.config.js +++ b/terminus-terminal/webpack.config.js @@ -1,20 +1,33 @@ +const path = require('path') + module.exports = { target: 'node', entry: 'src/index.ts', devtool: 'source-map', + context: __dirname, output: { - filename: './dist/index.js', + path: path.resolve(__dirname, 'dist'), + filename: 'index.js', pathinfo: true, libraryTarget: 'umd', devtoolModuleFilenameTemplate: 'webpack-terminus-terminal:///[resource-path]', }, resolve: { - modules: ['.', 'node_modules', '../app/node_modules'], + modules: ['.', 'src', 'node_modules', '../app/node_modules'].map(x => path.join(__dirname, x)), extensions: ['.ts', '.js'], }, module: { loaders: [ - { test: /\.ts$/, use: 'awesome-typescript-loader' }, + { + test: /\.ts$/, + loader: 'awesome-typescript-loader', + query: { + paths: { + "terminus-*": [path.resolve(__dirname, '../terminus-*')], + "*": [path.resolve(__dirname, '../app/node_modules/*')], + } + } + }, { test: /schemes\/.*$/, use: "raw-loader" }, { test: /\.pug$/, use: ['apply-loader', 'pug-loader'] }, { test: /\.scss$/, use: ['to-string-loader', 'css-loader', 'sass-loader'] }, diff --git a/tsconfig.json b/tsconfig.json index a60f3f26..567e883e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -19,10 +19,7 @@ "es2015", "es2015.iterable.ts", "es7" - ], - "paths": { - "terminus-*": ["../../terminus-*"] - } + ] }, "compileOnSave": false, "exclude": [ diff --git a/webpack.config.js b/webpack.config.js index 59dadfd6..0bd056b9 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,69 +1,8 @@ -const path = require("path") -const webpack = require("webpack") - -module.exports = { - target: 'node', - entry: { - 'index.ignore': 'file-loader?name=index.html!pug-html-loader!./app/index.pug', - 'preload': './app/src/entry.preload.ts', - 'bundle': './app/src/entry.ts', - }, - devtool: 'source-map', - output: { - path: path.join(__dirname, 'app', 'assets', 'webpack'), - pathinfo: true, - //publicPath: 'assets/webpack/', - filename: '[name].js' - }, - resolve: { - modules: ['app/src/', 'node_modules', 'app/assets/'], - extensions: ['.ts', '.js'], - }, - module: { - loaders: [ - { - test: /\.ts$/, - use: 'awesome-typescript-loader', - exclude: [/node_modules/] - }, - { - test: /\.scss$/, - use: ['style-loader', 'css-loader', 'sass-loader'], - }, - { - test: /\.css$/, - use: ['style-loader', 'css-loader', 'sass-loader'], - }, - { - test: /\.(png|svg)$/, - loader: "file-loader", - options: { - name: 'images/[name].[hash:8].[ext]' - } - }, - { - test: /\.(ttf|eot|otf|woff|woff2)(\?v=[0-9]\.[0-9]\.[0-9])?$/, - loader: "file-loader", - options: { - name: 'fonts/[name].[hash:8].[ext]' - } - } - ] - }, - externals: { - '@angular/core': 'commonjs @angular/core', - '@angular/compiler': 'commonjs @angular/compiler', - '@angular/platform-browser': 'commonjs @angular/platform-browser', - '@angular/platform-browser-dynamic': 'commonjs @angular/platform-browser-dynamic', - '@angular/forms': 'commonjs @angular/forms', - '@angular/common': 'commonjs @angular/common', - '@ng-bootstrap/ng-bootstrap': 'commonjs @ng-bootstrap/ng-bootstrap', - 'rxjs': 'commonjs rxjs', - 'zone.js': 'commonjs zone.js', - }, - plugins: [ - new webpack.ProvidePlugin({ - "window.jQuery": "jquery", - }), - ] -} +module.exports = [ + require('./app/webpack.config.js'), + require('./terminus-core/webpack.config.js'), + require('./terminus-settings/webpack.config.js'), + require('./terminus-terminal/webpack.config.js'), + require('./terminus-clickable-links/webpack.config.js'), + require('./terminus-community-color-schemes/webpack.config.js'), +]