UNPKG

@omnia/tooling-vue

Version:

Used to bundle and serve manifests web component that build on Vue framework.

426 lines (424 loc) • 14 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const $ = tslib_1.__importStar(require("../variables")); const ExtractTextPlugin = require('mini-css-extract-plugin'); const fsExtra = require('fs-extra'); fsExtra.copySync('wwwroot/scripts/vue-class-component/vue-class-component.esm.custom.js', 'node_modules/vue-class-component/dist/vue-class-component.esm.js'); const extractCSS = new ExtractTextPlugin({ filename: "omnia.vendor.css", }); var outDir = "wwwroot/scripts"; $.tooling.log('omnia shared vendor running...'); $.webpack({ mode: 'production', devtool: false, context: $.tooling.utils.root(""), resolve: { extensions: ['.js', '.css'], alias: { 'axios$': 'axios/dist/axios.js', }, }, optimization: { minimize: false, usedExports: false, providedExports: true, removeAvailableModules: false, mangleExports: false, concatenateModules: true, }, entry: { shared: [ "axios", 'broadcast-channel', ] }, //target: ['webworker', 'web'], module: { rules: [ { test: /\.css(\?|$)/, use: [ { loader: ExtractTextPlugin.loader, options: { publicPath: '../css' } }, 'css-loader', ] }, { test: /\.(woff2?|eot|ttf|otf|svg)(\?.*)?$/, use: [{ loader: 'file-loader', options: { name: '[name].[ext]', outputPath: '../fonts/' } }] } ] }, output: { path: $.path.join($.tooling.utils.root(""), outDir), filename: 'omnia.[name].vendor.js', library: { name: 'omniaSharedVendor', type: 'global', } }, plugins: [ new $.webpack.ContextReplacementPlugin(/moment[\/\\]locale$/, /ignore/), extractCSS, new $.omniaWebpackPlugins.NamedModulesPlugin(), new $.omniaWebpackPlugins.ModifyContent([ //{ // pattern: /var omniaVendor;omniaVendor/i, // replacement: "window['omniaVendor'] " //}, { pattern: /# sourceMappingURL=\s*(\S+)/g, replacement: '# ignore' }, { pattern: /__webpack_module_cache__/g, replacement: '__omnia_webpack_module_cache__' } ]), new $.webpack.DllPlugin({ path: $.path.resolve(__dirname, "../config/omnia.[name].vendor.manifest.json"), name: 'omniaSharedVendor', entryOnly: false }), new $.webpack.DefinePlugin({ process: { env: { NODE_ENV: JSON.stringify('production') } } }) ] }) .run((err, stats) => { if (err || stats.hasErrors()) { //console.log(stats.toJson({ // assets: false, // hash: true //})) $.tooling.log('Omnia shared vendor have error : \r\n', $.tooling.LogTypes.Error); if (err) { $.tooling.log(err.stack || err, $.tooling.LogTypes.Error); } else { stats.toJson().errors.forEach(err => { $.tooling.log(err.stack || err, $.tooling.LogTypes.Error); }); } } else { // generate omnia vendor metadata var manifestPath = $.path.resolve(__dirname, "../config/omnia.shared.vendor.manifest.json"); var manifestJson = require(manifestPath); manifestJson.content["./node_modules/webpack/buildin/module.js"] = undefined; $.fs.writeFileSync(manifestPath, JSON.stringify(manifestJson)); $.tooling.log('omnia shared vendor generated'); } }); $.tooling.log('omnia vendor running...'); $.webpack({ mode: 'production', devtool: false, context: $.tooling.utils.root(""), resolve: { extensions: ['.js', '.css'], alias: { 'typestyle$': 'typestyle/lib.es2015/index.js', 'vue$': 'vue/dist/vue.esm.js', 'rope-sequence$': 'rope-sequence/dist/index.js', 'w3c-keyname$': $.path.resolve($.tooling.utils.root(""), 'node_modules/w3c-keyname/index.es.js'), 'orderedmap$': 'orderedmap/index.js', "vue-tsx-support/enable-check": "./client/tooling/vue/tasks/materials/dummy-vue-tsx-support-enable-check.js" }, }, optimization: { minimize: false, usedExports: false, providedExports: true, removeAvailableModules: false, mangleExports: false, concatenateModules: true, }, module: { rules: [ { test: /\.css(\?|$)/, use: [ { loader: ExtractTextPlugin.loader, options: { publicPath: '../css' } }, 'css-loader', ] }, { test: /\.(woff2?|eot|ttf|otf|svg)(\?.*)?$/, use: [{ loader: 'file-loader', options: { name: '[name].[ext]', outputPath: '../fonts/' } }] } ] }, entry: { vendor: [ "tslib", "vue", "vue-class-component", "vue-property-decorator", "vue-tsx-support", "vue-tsx-support/enable-check", // "vue-tsx-support/lib/vca", "@vue/babel-helper-vue-jsx-merge-props", // "@vue/composition-api", "typestyle", "csx", "zepto-webpack", "mousetrap", "mousetrap-global-bind", "dayjs", "dayjs/plugin/utc", "dayjs/plugin/timezone", 'dayjs/plugin/duration', 'dayjs/plugin/relativeTime', "dayjs/locale/da.js", "dayjs/locale/de.js", "dayjs/locale/et.js", "dayjs/locale/fr.js", "dayjs/locale/lt.js", "dayjs/locale/lv.js", "dayjs/locale/pl.js", "dayjs/locale/sv.js", "dayjs/locale/nb.js", "dayjs/locale/fi.js", "dayjs/locale/es.js", "dayjs/locale/nl.js", "./wwwroot/scripts/zepto.extras.js", // "@material/material-color-utilities" ] }, output: { path: $.path.join($.tooling.utils.root(""), outDir), filename: 'omnia.[name].js', library: { name: 'omniaVendor', type: 'window', } }, plugins: [ new $.webpack.ContextReplacementPlugin(/moment[\/\\]locale$/, /ignore/), extractCSS, new $.omniaWebpackPlugins.NamedModulesPlugin(), new $.omniaWebpackPlugins.ModifyContent([ { pattern: /var omniaVendor;omniaVendor/i, replacement: "window['omniaVendor'] " }, { pattern: /# sourceMappingURL=\s*(\S+)/g, replacement: '# ignore' }, { pattern: /__webpack_module_cache__/g, replacement: '__omnia_webpack_module_cache__' }, { pattern: "const key = `f${stringHash(pid)}`;", replacement: ` // <<omnia custom>> support prefix displayname in styleflow ` + "const key = `f${stringHash(pid)}`;" + ` if (!styles.$displayName) return key; ` + "return `${styles.$displayName}_${key}`;" }, { pattern: "function h(type, props, children) {", replacement: ` // <<omnia custom>> to calling custom createElement from current instance var fallbackCreateElement; function customDefineComponentInstance(Ctor, options) { if (options === void 0) { options = {}; } var silent = Ctor.config.silent; Ctor.config.silent = true; var vm = new Ctor(options); Ctor.config.silent = silent; return vm; } function h(type, props, children) { if (currentInstance){ return currentInstance.$createElement(type, props, children); } if (!fallbackCreateElement) { fallbackCreateElement = customDefineComponentInstance(Vue).$createElement; } return fallbackCreateElement(type, props, children); ` } ]), new $.webpack.DllPlugin({ path: $.path.resolve(__dirname, "../config/omnia.[name].manifest.json"), name: 'omniaVendor', entryOnly: false }), new $.webpack.DefinePlugin({ process: { env: { NODE_ENV: JSON.stringify('production') } } }) ] }) .run((err, stats) => { if (err || stats.hasErrors()) { //console.log(stats.toJson({ // assets: false, // hash: true //})) $.tooling.log('Omnia vendor have error : \r\n', $.tooling.LogTypes.Error); if (err) { $.tooling.log(err.stack || err, $.tooling.LogTypes.Error); } else { stats.toJson().errors.forEach(err => { $.tooling.log(err.stack || err, $.tooling.LogTypes.Error); }); } } else { // generate omnia vendor metadata var manifestPath = $.path.resolve(__dirname, "../config/omnia.vendor.manifest.json"); var manifestJson = require(manifestPath); manifestJson.content["./node_modules/webpack/buildin/module.js"] = undefined; $.fs.writeFileSync(manifestPath, JSON.stringify(manifestJson)); $.tooling.log('omnia vendor generated'); } }); // bundle omnia worker vendor $.tooling.log('omnia worker vendor running...'); $.webpack({ mode: 'production', devtool: false, context: $.tooling.utils.root(""), entry: { worker: [ '@microsoft/signalr', ] }, resolve: { extensions: ['.js', '.css'], alias: { '@microsoft/signalr': '@microsoft/signalr/dist/webworker/signalr.js' }, }, optimization: { minimize: false, usedExports: false, providedExports: true, removeAvailableModules: false, mangleExports: false, concatenateModules: true, }, module: { noParse: (content) => { if (content.indexOf("@microsoft\\signalr\\dist\\webworker\\signalr.js") > -1 || content.indexOf("@microsoft/signalr/dist/webworker/signalr.js") > -1) { return true; } return false; }, rules: [ { test: /\.css(\?|$)/, use: [ { loader: ExtractTextPlugin.loader, options: { publicPath: '../css' } }, 'css-loader', ] }, { test: /\.(woff2?|eot|ttf|otf|svg)(\?.*)?$/, use: [{ loader: 'file-loader', options: { name: '[name].[ext]', outputPath: '../fonts/' } }] } ] }, target: ['webworker'], output: { path: $.path.join($.tooling.utils.root(""), outDir), filename: 'omnia.[name].vendor.js', library: { name: 'omniaWorkerVendor', type: 'global', } }, plugins: [ new $.webpack.ContextReplacementPlugin(/moment[\/\\]locale$/, /ignore/), extractCSS, new $.omniaWebpackPlugins.NamedModulesPlugin(), new $.omniaWebpackPlugins.ModifyContent([ { pattern: /var omniaWorkerVendor;omniaWorkerVendor/i, replacement: "globalThis['omniaWorkerVendor'] " }, { pattern: /# sourceMappingURL=\s*(\S+)/g, replacement: '# ignore' }, { pattern: /__webpack_module_cache__/g, replacement: '__omnia_webpack_module_cache__' } ]), new $.webpack.DllPlugin({ path: $.path.resolve(__dirname, "../config/omnia.[name].vendor.manifest.json"), name: 'omniaWorkerVendor', entryOnly: false }), new $.webpack.DefinePlugin({ process: { env: { NODE_ENV: JSON.stringify('production') } } }) ] }) .run((err, stats) => { if (err || stats.hasErrors()) { console.log(stats.toJson({ assets: false, hash: true })); $.tooling.log('Omnia vendor have error : \r\n', $.tooling.LogTypes.Error); if (err) { $.tooling.log(err.stack || err, $.tooling.LogTypes.Error); } else { stats.toJson().errors.forEach(err => { $.tooling.log(err.stack || err, $.tooling.LogTypes.Error); }); } } else { // generate omnia vendor metadata var manifestPath = $.path.resolve(__dirname, "../config/omnia.worker.vendor.manifest.json"); var manifestJson = require(manifestPath); manifestJson.content["./node_modules/webpack/buildin/module.js"] = undefined; $.fs.writeFileSync(manifestPath, JSON.stringify(manifestJson)); $.tooling.log('omnia worker vendor generated'); } });