diff --git a/terminus-community-color-schemes/webpack.config.js b/terminus-community-color-schemes/webpack.config.js index 6446a810..031a4556 100644 --- a/terminus-community-color-schemes/webpack.config.js +++ b/terminus-community-color-schemes/webpack.config.js @@ -1,51 +1,6 @@ -const path = require('path') - -module.exports = { - target: 'node', - entry: 'src/index.ts', - context: __dirname, - devtool: 'cheap-module-source-map', - output: { - path: path.resolve(__dirname, 'dist'), - filename: 'index.js', - pathinfo: true, - libraryTarget: 'umd', - devtoolModuleFilenameTemplate: 'webpack-terminus-community-color-schemes:///[resource-path]', - }, - mode: process.env.TERMINUS_DEV ? 'development' : 'production', - optimization:{ - minimize: false, - }, - resolve: { - modules: ['.', 'src', 'node_modules', '../app/node_modules'].map(x => path.join(__dirname, x)), - extensions: ['.ts', '.js'], - }, - module: { - rules: [ - { - test: /\.ts$/, - use: { - loader: 'awesome-typescript-loader', - options: { - configFileName: path.resolve(__dirname, 'tsconfig.json'), - typeRoots: [ - path.resolve(__dirname, 'node_modules/@types'), - path.resolve(__dirname, '../node_modules/@types'), - ], - paths: { - "terminus-*": [path.resolve(__dirname, '../terminus-*')], - "*": [path.resolve(__dirname, '../app/node_modules/*')], - }, - }, - }, - }, - { test: /[\\\/]schemes[\\\/]/, use: "raw-loader" }, - ], - }, - externals: [ - /^rxjs/, - /^@angular/, - /^@ng-bootstrap/, - /^terminus-/, - ], -} +const config = require('../webpack.plugin.config') +module.exports = config({ + name: 'community-color-schemes', + dirname: __dirname, +}) +module.exports.module.rules.push({ test: /[\\\/]schemes[\\\/]/, use: 'raw-loader' }) diff --git a/terminus-core/webpack.config.js b/terminus-core/webpack.config.js index 2a6d0304..4a231ebb 100644 --- a/terminus-core/webpack.config.js +++ b/terminus-core/webpack.config.js @@ -1,60 +1,5 @@ -const path = require('path') - -module.exports = { - target: 'node', - entry: 'src/index.ts', - context: __dirname, - devtool: 'cheap-module-source-map', - output: { - path: path.resolve(__dirname, 'dist'), - filename: 'index.js', - pathinfo: true, - libraryTarget: 'umd', - devtoolModuleFilenameTemplate: 'webpack-terminus-core:///[resource-path]', - }, - mode: process.env.TERMINUS_DEV ? 'development' : 'production', - optimization:{ - minimize: false, - }, - resolve: { - modules: ['.', 'src', 'node_modules', '../app/node_modules'].map(x => path.join(__dirname, x)), - extensions: ['.ts', '.js'], - }, - module: { - rules: [ - { - test: /\.ts$/, - use: { - loader: 'awesome-typescript-loader', - options: { - configFileName: path.resolve(__dirname, 'tsconfig.json'), - typeRoots: [ - path.resolve(__dirname, 'node_modules/@types'), - path.resolve(__dirname, '../node_modules/@types'), - ], - paths: { - "terminus-*": [path.resolve(__dirname, '../terminus-*')], - "*": [path.resolve(__dirname, '../app/node_modules/*')], - }, - }, - }, - }, - { test: /\.pug$/, use: ['apply-loader', 'pug-loader'] }, - { test: /\.scss$/, use: ['@terminus-term/to-string-loader', 'css-loader', 'sass-loader'] }, - { test: /\.css$/, use: ['@terminus-term/to-string-loader', 'css-loader'], include: /component\.css/ }, - { test: /\.css$/, use: ['style-loader', 'css-loader'], exclude: /component\.css/ }, - { test: /\.yaml$/, use: ['json-loader', 'yaml-loader'] }, - { test: /\.svg/, use: ['svg-inline-loader'] }, - ], - }, - externals: [ - 'electron', - 'fs', - 'os', - 'path', - 'windows-native-registry', - /^rxjs/, - /^@angular/, - /^@ng-bootstrap/, - ], -} +const config = require('../webpack.plugin.config') +module.exports = config({ + name: 'core', + dirname: __dirname, +}) diff --git a/terminus-plugin-manager/webpack.config.js b/terminus-plugin-manager/webpack.config.js index acd5bf00..c150f071 100644 --- a/terminus-plugin-manager/webpack.config.js +++ b/terminus-plugin-manager/webpack.config.js @@ -1,56 +1,5 @@ -const path = require('path') - -module.exports = { - target: 'node', - entry: 'src/index.ts', - context: __dirname, - devtool: 'cheap-module-source-map', - output: { - path: path.resolve(__dirname, 'dist'), - filename: 'index.js', - pathinfo: true, - libraryTarget: 'umd', - devtoolModuleFilenameTemplate: 'webpack-terminus-plugin-manager:///[resource-path]', - }, - mode: process.env.TERMINUS_DEV ? 'development' : 'production', - optimization:{ - minimize: false, - }, - resolve: { - modules: ['.', 'src', 'node_modules', '../app/node_modules'].map(x => path.join(__dirname, x)), - extensions: ['.ts', '.js'], - }, - module: { - rules: [ - { - test: /\.ts$/, - use: { - loader: 'awesome-typescript-loader', - options: { - configFileName: path.resolve(__dirname, 'tsconfig.json'), - typeRoots: [ - path.resolve(__dirname, 'node_modules/@types'), - path.resolve(__dirname, '../node_modules/@types'), - ], - paths: { - "terminus-*": [path.resolve(__dirname, '../terminus-*')], - "*": [path.resolve(__dirname, '../app/node_modules/*')], - }, - }, - }, - }, - { test: /\.pug$/, use: ['apply-loader', 'pug-loader'] }, - { test: /\.scss$/, use: ['@terminus-term/to-string-loader', 'css-loader', 'sass-loader'] }, - ], - }, - externals: [ - 'fs', - 'net', - 'path', - 'electron-promise-ipc', - /^rxjs/, - /^@angular/, - /^@ng-bootstrap/, - /^terminus-/, - ], -} +const config = require('../webpack.plugin.config') +module.exports = config({ + name: 'plugin-manager', + dirname: __dirname, +}) diff --git a/terminus-serial/webpack.config.js b/terminus-serial/webpack.config.js index ce0a0465..4e76d61c 100644 --- a/terminus-serial/webpack.config.js +++ b/terminus-serial/webpack.config.js @@ -1,61 +1,5 @@ -const path = require('path') - -module.exports = { - target: 'node', - entry: 'src/index.ts', - context: __dirname, - devtool: 'source-map', - output: { - path: path.resolve(__dirname, 'dist'), - filename: 'index.js', - pathinfo: true, - libraryTarget: 'umd', - devtoolModuleFilenameTemplate: 'webpack-terminus-serial:///[resource-path]', - }, - mode: process.env.TERMINUS_DEV ? 'development' : 'production', - optimization:{ - minimize: false, - }, - resolve: { - modules: ['.', 'src', 'node_modules', '../app/node_modules'].map(x => path.join(__dirname, x)), - extensions: ['.ts', '.js', '.node'], - }, - module: { - rules: [ - { - test: /\.ts$/, - use: { - loader: 'awesome-typescript-loader', - options: { - configFileName: path.resolve(__dirname, 'tsconfig.json'), - typeRoots: [ - path.resolve(__dirname, 'node_modules/@types'), - path.resolve(__dirname, '../node_modules/@types'), - ], - paths: { - "terminus-*": [path.resolve(__dirname, '../terminus-*')], - "*": [path.resolve(__dirname, '../app/node_modules/*')], - }, - }, - }, - }, - { test: /\.pug$/, use: ['apply-loader', 'pug-loader'] }, - { test: /\.scss$/, use: ['@terminus-term/to-string-loader', 'css-loader', 'sass-loader'] }, - { test: /\.svg/, use: ['svg-inline-loader'] }, - ], - }, - externals: [ - 'fs', - 'keytar', - 'path', - 'ngx-toastr', - 'serialport', - 'readline', - 'stream', - 'windows-process-tree/build/Release/windows_process_tree.node', - /^rxjs/, - /^@angular/, - /^@ng-bootstrap/, - /^terminus-/, - ], -} +const config = require('../webpack.plugin.config') +module.exports = config({ + name: 'serial', + dirname: __dirname, +}) diff --git a/terminus-settings/webpack.config.js b/terminus-settings/webpack.config.js index ac288a0a..b20dea8d 100644 --- a/terminus-settings/webpack.config.js +++ b/terminus-settings/webpack.config.js @@ -1,57 +1,5 @@ -const path = require('path') - -module.exports = { - target: 'node', - entry: 'src/index.ts', - context: __dirname, - devtool: 'cheap-module-source-map', - output: { - path: path.resolve(__dirname, 'dist'), - filename: 'index.js', - pathinfo: true, - libraryTarget: 'umd', - devtoolModuleFilenameTemplate: 'webpack-terminus-settings:///[resource-path]', - }, - mode: process.env.TERMINUS_DEV ? 'development' : 'production', - optimization:{ - minimize: false, - }, - resolve: { - modules: ['.', 'src', 'node_modules', '../app/node_modules'].map(x => path.join(__dirname, x)), - extensions: ['.ts', '.js'], - }, - module: { - rules: [ - { - test: /\.ts$/, - use: { - loader: 'awesome-typescript-loader', - options: { - configFileName: path.resolve(__dirname, 'tsconfig.json'), - typeRoots: [ - path.resolve(__dirname, 'node_modules/@types'), - path.resolve(__dirname, '../node_modules/@types'), - ], - paths: { - "terminus-*": [path.resolve(__dirname, '../terminus-*')], - "*": [path.resolve(__dirname, '../app/node_modules/*')], - }, - }, - }, - }, - { test: /\.pug$/, use: ['apply-loader', 'pug-loader'] }, - { test: /\.scss$/, use: ['@terminus-term/to-string-loader', 'css-loader', 'sass-loader'] }, - { test: /\.css$/, use: ['@terminus-term/to-string-loader', 'css-loader', 'sass-loader'] }, - { test: /\.svg/, use: ['svg-inline-loader'] }, - ], - }, - externals: [ - 'fs', - 'path', - 'os', - /^rxjs/, - /^@angular/, - /^@ng-bootstrap/, - /^terminus-/, - ], -} +const config = require('../webpack.plugin.config') +module.exports = config({ + name: 'settings', + dirname: __dirname, +}) diff --git a/terminus-ssh/webpack.config.js b/terminus-ssh/webpack.config.js index fe2732b2..b4da8e9b 100644 --- a/terminus-ssh/webpack.config.js +++ b/terminus-ssh/webpack.config.js @@ -1,61 +1,5 @@ -const path = require('path') - -module.exports = { - target: 'node', - entry: 'src/index.ts', - context: __dirname, - devtool: 'cheap-module-source-map', - output: { - path: path.resolve(__dirname, 'dist'), - filename: 'index.js', - pathinfo: true, - libraryTarget: 'umd', - devtoolModuleFilenameTemplate: 'webpack-terminus-ssh:///[resource-path]', - }, - mode: process.env.TERMINUS_DEV ? 'development' : 'production', - optimization:{ - minimize: false, - }, - resolve: { - modules: ['.', 'src', 'node_modules', '../app/node_modules'].map(x => path.join(__dirname, x)), - extensions: ['.ts', '.js'], - }, - module: { - rules: [ - { - test: /\.ts$/, - use: { - loader: 'awesome-typescript-loader', - options: { - configFileName: path.resolve(__dirname, 'tsconfig.json'), - typeRoots: [ - path.resolve(__dirname, 'node_modules/@types'), - path.resolve(__dirname, '../node_modules/@types'), - ], - paths: { - "terminus-*": [path.resolve(__dirname, '../terminus-*')], - "*": [path.resolve(__dirname, '../app/node_modules/*')], - }, - }, - }, - }, - { test: /\.pug$/, use: ['apply-loader', 'pug-loader'] }, - { test: /\.scss$/, use: ['@terminus-term/to-string-loader', 'css-loader', 'sass-loader'] }, - { test: /\.svg/, use: ['svg-inline-loader'] }, - ], - }, - externals: [ - 'child_process', - 'fs', - 'keytar', - 'path', - 'ngx-toastr', - 'socksv5', - 'windows-native-registry', - 'windows-process-tree/build/Release/windows_process_tree.node', - /^rxjs/, - /^@angular/, - /^@ng-bootstrap/, - /^terminus-/, - ], -} +const config = require('../webpack.plugin.config') +module.exports = config({ + name: 'ssh', + dirname: __dirname, +}) diff --git a/terminus-terminal/webpack.config.js b/terminus-terminal/webpack.config.js index cc4a34e2..fe7df5d0 100644 --- a/terminus-terminal/webpack.config.js +++ b/terminus-terminal/webpack.config.js @@ -1,80 +1,8 @@ const path = require('path') - -module.exports = { - target: 'node', - entry: 'src/index.ts', - context: __dirname, - devtool: 'cheap-module-source-map', - output: { - path: path.resolve(__dirname, 'dist'), - filename: 'index.js', - pathinfo: true, - libraryTarget: 'umd', - devtoolModuleFilenameTemplate: 'webpack-terminus-terminal:///[resource-path]', - }, - mode: process.env.TERMINUS_DEV ? 'development' : 'production', - optimization: { - minimize: false, - }, - resolve: { - modules: ['.', 'src', 'node_modules', '../app/node_modules', 'node_modules/xterm/src'].map(x => path.join(__dirname, x)), - extensions: ['.ts', '.js'], - }, - module: { - rules: [ - { - test: /\.ts$/, - use: { - loader: 'awesome-typescript-loader', - options: { - configFileName: path.resolve(__dirname, 'tsconfig.json'), - typeRoots: [ - path.resolve(__dirname, 'node_modules/@types'), - path.resolve(__dirname, '../node_modules/@types'), - ], - paths: { - "terminus-*": [path.resolve(__dirname, '../terminus-*')], - "*": [ - path.resolve(__dirname, '../app/node_modules/*'), - path.resolve(__dirname, './node_modules/xterm/src/*'), - ], - }, - }, - }, - }, - { test: /\.pug$/, use: ['apply-loader', 'pug-loader'] }, - { test: /\.scss$/, use: ['@terminus-term/to-string-loader', 'css-loader', 'sass-loader'] }, - { test: /\.css$/, use: ['style-loader', 'css-loader'] }, - { test: /\.svg/, use: ['svg-inline-loader'] }, - { - test: /\.(ttf|eot|otf|woff|woff2|ogg)(\?v=[0-9]\.[0-9]\.[0-9])?$/, - use: { - loader: 'url-loader', - options: { - limit: 999999999999, - }, - }, - }, - ], - }, - externals: [ - 'child_process', - 'electron', - 'fontmanager-redux', - 'fs', - 'path', - 'macos-native-processlist', - 'windows-native-registry', - '@terminus-term/node-pty', - 'windows-process-tree', - 'native-process-working-directory', - 'os', - /^rxjs/, - /^@angular/, - /^@ng-bootstrap/, - 'ngx-toastr', - /^terminus-/, - ], - // Ignore warnings due to yarg's dynamic module loading - ignoreWarnings: [/node_modules\/yargs/], -} +const config = require('../webpack.plugin.config') +module.exports = config({ + name: 'terminal', + dirname: __dirname, +}) +module.exports.resolve.modules.push('node_modules/xterm/src') +module.exports.module.rules.find(x => x.use.loader === 'awesome-typescript-loader').use.options.paths['*'].push(path.resolve(__dirname, './node_modules/xterm/src/*')) diff --git a/webpack.plugin.config.js b/webpack.plugin.config.js new file mode 100644 index 00000000..f8e674f2 --- /dev/null +++ b/webpack.plugin.config.js @@ -0,0 +1,94 @@ +const path = require('path') + +module.exports = options => { + const isDev = !!process.env.TERMINUS_DEV + const devtool = isDev && process.platform === 'win32' ? 'cheap-eval-module-source-map' : 'cheap-module-source-map' + return { + target: 'node', + entry: 'src/index.ts', + context: options.dirname, + devtool, + output: { + path: path.resolve(options.dirname, 'dist'), + filename: 'index.js', + pathinfo: true, + libraryTarget: 'umd', + devtoolModuleFilenameTemplate: `webpack-terminus-${options.name}:///[resource-path]`, + }, + mode: isDev ? 'development' : 'production', + optimization:{ + minimize: false, + }, + cache: !isDev ? false : { + type: 'filesystem', + cacheDirectory: path.resolve(options.dirname, 'node_modules', '.webpack-cache'), + }, + resolve: { + modules: ['.', 'src', 'node_modules', '../app/node_modules'].map(x => path.join(options.dirname, x)), + extensions: ['.ts', '.js'], + }, + module: { + rules: [ + { + test: /\.ts$/, + use: { + loader: 'awesome-typescript-loader', + options: { + configFileName: path.resolve(options.dirname, 'tsconfig.json'), + typeRoots: [ + path.resolve(options.dirname, 'node_modules/@types'), + path.resolve(options.dirname, '../node_modules/@types'), + ], + paths: { + 'terminus-*': [path.resolve(options.dirname, '../terminus-*')], + '*': [path.resolve(options.dirname, '../app/node_modules/*')], + }, + }, + }, + }, + { test: /\.pug$/, use: ['apply-loader', 'pug-loader'] }, + { test: /\.scss$/, use: ['@terminus-term/to-string-loader', 'css-loader', 'sass-loader'] }, + { test: /\.css$/, use: ['@terminus-term/to-string-loader', 'css-loader'], include: /component\.css/ }, + { test: /\.css$/, use: ['style-loader', 'css-loader'], exclude: /component\.css/ }, + { test: /\.yaml$/, use: ['json-loader', 'yaml-loader'] }, + { test: /\.svg/, use: ['svg-inline-loader'] }, + { + test: /\.(ttf|eot|otf|woff|woff2|ogg)(\?v=[0-9]\.[0-9]\.[0-9])?$/, + use: { + loader: 'url-loader', + options: { + limit: 999999999999, + }, + }, + }, + ], + }, + externals: [ + '@terminus-term/node-pty', + 'child_process', + 'electron-promise-ipc', + 'electron', + 'fontmanager-redux', + 'fs', + 'keytar', + 'macos-native-processlist', + 'native-process-working-directory', + 'net', + 'ngx-toastr', + 'os', + 'path', + 'readline', + 'serialport', + 'socksv5', + 'stream', + 'windows-native-registry', + 'windows-process-tree', + //'windows-process-tree/build/Release/windows_process_tree.node', + /^@angular/, + /^@ng-bootstrap/, + /^rxjs/, + /^terminus-/, + ], + ignoreWarnings: [/node_modules\/yargs/], + } +}