Eugene Pankov пре 4 година
родитељ
комит
6fdccd0a02

+ 6 - 51
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' })

+ 5 - 60
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,
+})

+ 5 - 56
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,
+})

+ 5 - 61
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,
+})

+ 5 - 57
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,
+})

+ 5 - 61
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,
+})

+ 7 - 79
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/*'))

+ 94 - 0
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/],
+    }
+}