From 3d9cc012c135cb950f141a9be11b792d24357624 Mon Sep 17 00:00:00 2001 From: Bradley Maier Date: Wed, 2 Sep 2020 17:09:06 -0700 Subject: [PATCH 01/12] Update in progress --- package.json | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 8cd00bc2..1a7d470e 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,6 @@ "devDependencies": { "@dojo/cli": "~7.0.0", "@dojo/scripts": "~4.0.2", - "@types/clean-webpack-plugin": "0.1.2", "@types/compression": "0.0.36", "@types/connect-history-api-fallback": "1.3.1", "@types/copy-webpack-plugin": "4.4.1", @@ -70,7 +69,6 @@ "@types/express-serve-static-core": "4.16.4", "@types/globby": "6.1.0", "@types/gzip-size": "4.0.0", - "@types/html-webpack-plugin": "3.2.0", "@types/http-proxy-middleware": "^0.17.5", "@types/jquery": "3.3.29", "@types/jsonfile": "4.0.1", @@ -86,7 +84,6 @@ "@types/sinon": "~4.3.3", "@types/strip-ansi": "3.0.0", "@types/tapable": "1.0.4", - "@types/webpack": "4.4.32", "@types/webpack-manifest-plugin": "1.3.2", "@types/yargs": "10.0.0", "codecov": "~3.0.4", @@ -105,12 +102,12 @@ "tslint": "5.18.0" }, "dependencies": { - "@dojo/webpack-contrib": "8.0.0-alpha.1", + "@dojo/webpack-contrib": "file:~/Projects/opensource/webpack-contrib/dist/release/dojo-webpack-contrib-7.0.6-pre.tgz", "@typescript-eslint/eslint-plugin": "2.34.0", "@typescript-eslint/parser": "2.34.0", "caniuse-lite": "1.0.30000973", "chalk": "2.4.1", - "clean-webpack-plugin": "1.0.0", + "clean-webpack-plugin": "3.0.0", "cli-columns": "3.1.2", "compression": "1.7.4", "compression-webpack-plugin": "4.0.0", @@ -130,7 +127,7 @@ "globby": "7.1.1", "gzip-size": "4.1.0", "html-loader": "0.5.5", - "html-webpack-plugin": "3.2.0", + "html-webpack-plugin": "4.4.1", "http-proxy-middleware": "0.19.0", "identity-loader": "1.0.1", "image-webpack-loader": "6.0.0", @@ -141,7 +138,7 @@ "loader-utils": "1.1.0", "log-symbols": "2.1.0", "log-update": "2.3.0", - "mini-css-extract-plugin": "0.4.2", + "mini-css-extract-plugin": "0.11.0", "minimatch": "3.0.4", "optimize-css-assets-webpack-plugin": "5.0.1", "ora": "1.3.0", @@ -160,7 +157,7 @@ "tsconfig-paths-webpack-plugin": "3.2.0", "typed-css-modules": "0.3.1", "umd-compat-loader": "2.1.1", - "webpack": "4.25.1", + "webpack": "5.0.0-beta.29", "webpack-hot-middleware": "2.24.3", "webpack-manifest-plugin": "2.0.4", "webpack-mild-compile": "3.3.1", From de305977160345c47ec29b0f6b0ed7055fa6e28f Mon Sep 17 00:00:00 2001 From: Bradley Maier Date: Wed, 9 Sep 2020 18:13:12 -0700 Subject: [PATCH 02/12] WIP --- package.json | 12 +-- src/base.config.ts | 54 +++++----- src/base.test.config.ts | 6 +- src/dev.config.ts | 14 +-- src/dist.config.ts | 26 +++-- src/functional.config.ts | 4 +- src/typings/copy-webpack-plugin.d.ts | 119 +++++++++++++++++++++++ src/typings/mini-css-extract-plugin.d.ts | 53 ++++++++++ src/unit.config.ts | 6 +- tsconfig.json | 1 + 10 files changed, 241 insertions(+), 54 deletions(-) create mode 100644 src/typings/copy-webpack-plugin.d.ts create mode 100644 src/typings/mini-css-extract-plugin.d.ts diff --git a/package.json b/package.json index 1a7d470e..081bdae4 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "serve": "serve -p 9999", "test:ci": "run-p --race serve test", "test:cypress": "cypress run", - "test": "run-s build artifact:package artifact:install build intern artifact:build:* test:cypress", + "test": "run-s build artifact:package artifact:install build artifact:build:* test:cypress", "uploadCoverage": "codecov --file=coverage/coverage.json", "watch:ts": "dojo-tsc-watcher -p tsconfig.json -- dojo-package", "watch": "run-p watch:ts \"build:static:** -- --watch\"" @@ -62,10 +62,10 @@ "@dojo/scripts": "~4.0.2", "@types/compression": "0.0.36", "@types/connect-history-api-fallback": "1.3.1", - "@types/copy-webpack-plugin": "4.4.1", "@types/cssnano": "4.0.0", "@types/execa": "0.8.0", "@types/express": "4.11.0", + "@types/webpack-manifest-plugin": "2.1.0", "@types/express-serve-static-core": "4.16.4", "@types/globby": "6.1.0", "@types/gzip-size": "4.0.0", @@ -75,7 +75,6 @@ "@types/loader-utils": "1.1.3", "@types/log-symbols": "2.0.0", "@types/log-update": "2.0.0", - "@types/mini-css-extract-plugin": "0.2.0", "@types/minimatch": "3.0.3", "@types/mockery": "1.4.29", "@types/node": "~9.6.5", @@ -84,7 +83,6 @@ "@types/sinon": "~4.3.3", "@types/strip-ansi": "3.0.0", "@types/tapable": "1.0.4", - "@types/webpack-manifest-plugin": "1.3.2", "@types/yargs": "10.0.0", "codecov": "~3.0.4", "cpx": "~1.5.0", @@ -113,6 +111,7 @@ "compression-webpack-plugin": "4.0.0", "connect-history-api-fallback": "1.5.0", "connect-inject": "0.4.0", + "copy-webpack-plugin": "6.1.0", "css-loader": "1.0.1", "css-url-relative-plugin": "1.0.0", "cssnano": "4.1.7", @@ -131,7 +130,7 @@ "http-proxy-middleware": "0.19.0", "identity-loader": "1.0.1", "image-webpack-loader": "6.0.0", - "imports-loader": "0.8.0", + "imports-loader": "1.1.0", "istanbul-instrumenter-loader": "3.0.1", "json-css-module-loader": "1.0.2", "jsonfile": "4.0.0", @@ -146,6 +145,7 @@ "postcss-import": "12.0.0", "postcss-loader": "3.0.0", "postcss-preset-env": "6.7.0", + "schema-utils": "2.7.1", "slash": "1.0.0", "source-map-loader-cli": "0.0.1", "strip-ansi": "3.0.1", @@ -159,7 +159,7 @@ "umd-compat-loader": "2.1.1", "webpack": "5.0.0-beta.29", "webpack-hot-middleware": "2.24.3", - "webpack-manifest-plugin": "2.0.4", + "webpack-manifest-plugin": "3.0.0-rc.0", "webpack-mild-compile": "3.3.1", "webpack-pwa-manifest": "3.7.1", "wrapper-webpack-plugin": "2.0.0" diff --git a/src/base.config.ts b/src/base.config.ts index d32aa00d..b76bc80c 100644 --- a/src/base.config.ts +++ b/src/base.config.ts @@ -13,6 +13,8 @@ import * as cssnano from 'cssnano'; import * as minimatch from 'minimatch'; import * as ManifestPlugin from 'webpack-manifest-plugin'; import * as globby from 'globby'; +import { RuleSetRule } from 'webpack'; +import HtmlWebpackPlugin = require('html-webpack-plugin'); const CssUrlRelativePlugin = require('css-url-relative-plugin'); const postcssPresetEnv = require('postcss-preset-env'); @@ -46,6 +48,7 @@ export const packageName = packageJson.name || ''; const esLintPath = path.join(basePath, '.eslintrc.json'); const esLint = existsSync(esLintPath) ? require(esLintPath) : false; +(process as any).traceDeprecation = true; function getEsLintExclusions() { if (esLint && esLint.ignorePatterns) { @@ -182,7 +185,7 @@ export class InsertScriptPlugin { apply(compiler: any) { compiler.hooks.compilation.tap('InsertScriptPlugin', (compilation: any) => { - compilation.hooks.htmlWebpackPluginBeforeHtmlProcessing.tapAsync( + HtmlWebpackPlugin.getHooks(compilation).afterTemplateExecution.tapAsync( 'InsertScriptPlugin', (data: any, cb: Function) => { this._options.forEach(({ content, type }) => { @@ -320,7 +323,7 @@ export default function webpackConfigFactory(args: any): webpack.Configuration { } }; - const postCssModuleLoader = [ + const postCssModuleLoader: RuleSetRule['use'] = [ MiniCssExtractPlugin.loader, '@dojo/webpack-contrib/css-module-decorator-loader', { @@ -334,7 +337,7 @@ export default function webpackConfigFactory(args: any): webpack.Configuration { } ]; - const cssLoader = [ + const cssLoader: RuleSetRule['use'] = [ MiniCssExtractPlugin.loader, { loader: 'css-loader', @@ -365,9 +368,10 @@ export default function webpackConfigFactory(args: any): webpack.Configuration { const config: webpack.Configuration = { mode: 'development', externals: [ - function(context, request, callback) { + function(data: { context: string; request: string }, callback: (err: Error | null, result: any) => void) { + const { request } = data; const externals = (args.externals && args.externals.dependencies) || []; - function resolveExternal(externals: (string | { name?: string; type?: string })[]): string | void { + function resolveExternal(externals: (string | { name?: string; type?: string })[]) { for (let external of externals) { const name = external && (typeof external === 'string' ? external : external.name); if (name && new RegExp(`^${name}[!(\/|\\)]?`).test(request)) { @@ -389,21 +393,12 @@ export default function webpackConfigFactory(args: any): webpack.Configuration { } ], entry, - node: { - dgram: 'empty', - net: 'empty', - tls: 'empty', - fs: 'empty', - process: false, - Buffer: false, - setImmediate: false - }, output: { chunkFilename: '[name].js', library: `lib_${libraryName}`, umdNamedDefine: true, filename: '[name].js', - jsonpFunction: `dojoWebpackJsonp${libraryName}`, + // jsonpFunction: `dojoWebpackJsonp${libraryName}`, libraryTarget: 'umd', path: path.resolve('./output') }, @@ -416,7 +411,7 @@ export default function webpackConfigFactory(args: any): webpack.Configuration { plugins: [new TsconfigPathsPlugin({ configFile: path.join(basePath, 'tsconfig.json') })] }, optimization: { - noEmitOnErrors: false, + emitOnErrors: true, splitChunks: singleBundle ? {} : { @@ -428,7 +423,8 @@ export default function webpackConfigFactory(args: any): webpack.Configuration { minChunks: 1, name: exports.mainEntry, reuseExistingChunk: true, - test: (module: any, chunks: any) => { + test: (module: any, chunkSet: any) => { + const chunks: any[] = Array.from(chunkSet); if (chunks.length === 1 && chunks[0].name === 'main') { return true; } @@ -457,7 +453,7 @@ export default function webpackConfigFactory(args: any): webpack.Configuration { } }, devtool: 'source-map', - watchOptions: { ignored: /node_modules/ }, + watchOptions: { ignored: 'node_modules' }, plugins: removeEmpty([ new StyleLintPlugin({ config: { @@ -563,7 +559,11 @@ export default function webpackConfigFactory(args: any): webpack.Configuration { { test: /\.(css|js)$/, issuer: indexHtmlPattern, - loader: `file-loader?digest=hex&name=[path][name].[ext]` + loader: 'file-loader', + options: { + digest: 'hex', + name: '[path][name].[ext]' + } }, esLint && { include: allPaths, @@ -595,7 +595,10 @@ export default function webpackConfigFactory(args: any): webpack.Configuration { include: allPaths, test: /\.ts(x)?$/, enforce: 'pre', - loader: '@dojo/webpack-contrib/css-module-dts-loader?type=ts&instanceName=0_dojo' + loader: '@dojo/webpack-contrib/css-module-dts-loader', + options: { + type: 'ts&instanceName=0_dojo' + } }, { include: allPaths, @@ -638,11 +641,18 @@ export default function webpackConfigFactory(args: any): webpack.Configuration { { include: [/@dojo/, /globalize/], test: new RegExp(`globalize(\\${path.sep}|$)`), - loader: 'imports-loader?define=>false' + loader: 'imports-loader', + options: { + additionalCode: 'var define = false;' + } }, { test: /\.(gif|png|jpe?g|svg|eot|ttf|woff|woff2|ico)$/i, - loader: `file-loader?digest=hex&name=[path][name].[ext]` + loader: 'file-loader', + options: { + digest: 'hex', + name: '[path][name].[ext]' + } }, { test: /\.m\.css\.js$/, diff --git a/src/base.test.config.ts b/src/base.test.config.ts index 84a17454..5fc9998c 100644 --- a/src/base.test.config.ts +++ b/src/base.test.config.ts @@ -27,13 +27,13 @@ function webpackConfig(args: any): webpack.Configuration { ]); if (module) { - module.rules = module.rules.map((rule) => { + module.rules = (module.rules || []).map((rule: webpack.RuleSetRule) => { if (Array.isArray(rule.use)) { - rule.use = rule.use.map((loader) => { + rule.use = rule.use.map((loader: any) => { if (typeof loader === 'string') { return loader; } - const { loader: loaderName } = loader as webpack.RuleSetLoader; + const { loader: loaderName } = loader; if (loaderName === 'umd-compat-loader') { return { loader: loaderName, diff --git a/src/dev.config.ts b/src/dev.config.ts index 0675f3b0..158fc7f0 100644 --- a/src/dev.config.ts +++ b/src/dev.config.ts @@ -15,8 +15,9 @@ import * as path from 'path'; import webpack = require('webpack'); import BuildTimeRender from '@dojo/webpack-contrib/build-time-render/BuildTimeRender'; import ExternalLoaderPlugin from '@dojo/webpack-contrib/external-loader-plugin/ExternalLoaderPlugin'; -import * as CleanWebpackPlugin from 'clean-webpack-plugin'; +import { CleanWebpackPlugin } from 'clean-webpack-plugin'; import * as CopyWebpackPlugin from 'copy-webpack-plugin'; +import { RuleSetRule } from 'webpack'; const WebpackPwaManifest = require('webpack-pwa-manifest'); @@ -44,7 +45,8 @@ function webpackConfig(args: any): webpack.Configuration { config.plugins = [ ...plugins!, - assetsDirExists && new CopyWebpackPlugin([{ from: assetsDir, to: path.join(outputPath, 'assets') }]), + assetsDirExists && + new CopyWebpackPlugin({ patterns: [{ from: assetsDir, to: path.join(outputPath, 'assets') }] }), new HtmlWebpackPlugin({ base, inject: true, @@ -91,17 +93,17 @@ window['${libraryName}'].base = '${base}'`, `, type: 'append' }), - new CleanWebpackPlugin(['dev', 'info'], { root: output!.path, verbose: false }) + new CleanWebpackPlugin({ cleanAfterEveryBuildPatterns: ['dev', 'info'], verbose: false }) ].filter((item) => item); if (module) { - module.rules = module.rules.map((rule) => { + module.rules = module.rules.map((rule: RuleSetRule) => { if (Array.isArray(rule.use)) { - rule.use = rule.use.map((loader) => { + rule.use = rule.use.map((loader: any) => { if (typeof loader === 'string') { return loader; } - const { loader: loaderName, options } = loader as webpack.RuleSetLoader; + const { loader: loaderName, options } = loader; if (loaderName === '@dojo/webpack-contrib/static-build-loader') { if (typeof options === 'object') { options.features = { ...(options.features || {}), 'dojo-debug': true }; diff --git a/src/dist.config.ts b/src/dist.config.ts index 2d428463..f3ff9920 100644 --- a/src/dist.config.ts +++ b/src/dist.config.ts @@ -4,7 +4,7 @@ import BundleAnalyzerPlugin from '@dojo/webpack-contrib/webpack-bundle-analyzer/ import ServiceWorkerPlugin, { ServiceWorkerOptions } from '@dojo/webpack-contrib/service-worker-plugin/ServiceWorkerPlugin'; -import * as CleanWebpackPlugin from 'clean-webpack-plugin'; +import { CleanWebpackPlugin } from 'clean-webpack-plugin'; import * as CopyWebpackPlugin from 'copy-webpack-plugin'; import * as fs from 'fs'; import * as HtmlWebpackPlugin from 'html-webpack-plugin'; @@ -19,6 +19,7 @@ import baseConfigFactory, { libraryName } from './base.config'; import { WebAppManifest } from './interfaces'; +import { RuleSetRule } from 'webpack'; const CompressionPlugin = require('compression-webpack-plugin'); const TerserPlugin = require('terser-webpack-plugin'); @@ -53,7 +54,7 @@ function webpackConfig(args: any): webpack.Configuration { config.optimization = { ...config.optimization, - namedChunks: true, + chunkIds: 'named', minimizer: [new TerserPlugin({ sourceMap: true, cache: true })], flagIncludedChunks: false }; @@ -61,7 +62,7 @@ function webpackConfig(args: any): webpack.Configuration { if (args.imageOptimization) { config.module = { ...config.module, - rules: ((config.module && config.module.rules) || []).map((rule) => { + rules: ((config.module && config.module.rules) || []).map((rule: RuleSetRule) => { if (rule && typeof rule.loader === 'string' && rule.loader.startsWith('file-loader') && !rule.issuer) { return { ...rule, @@ -83,7 +84,8 @@ function webpackConfig(args: any): webpack.Configuration { config.plugins = [ ...plugins!, - assetsDirExists && new CopyWebpackPlugin([{ from: assetsDir, to: path.join(outputPath, 'assets') }]), + assetsDirExists && + new CopyWebpackPlugin({ patterns: [{ from: assetsDir, to: path.join(outputPath, 'assets') }] }), new BundleAnalyzerPlugin({ analyzerMode: 'static', openAnalyzer: false, @@ -141,7 +143,7 @@ function webpackConfig(args: any): webpack.Configuration { banner, test: /^.*\.js$/i }), - new CleanWebpackPlugin(['dist', 'info'], { root: output!.path, verbose: false }) + new CleanWebpackPlugin({ cleanAfterEveryBuildPatterns: ['dist', 'info'], verbose: false }) ].filter((item) => item); if (args['build-time-render']) { @@ -158,7 +160,7 @@ function webpackConfig(args: any): webpack.Configuration { ); } - config.plugins = config.plugins.map((plugin) => { + config.plugins = config.plugins.map((plugin: any) => { if (plugin instanceof MiniCssExtractPlugin) { return new MiniCssExtractPlugin({ filename: args.omitHash ? '[name].bundle.css' : '[name].[contenthash].bundle.css' @@ -168,13 +170,17 @@ function webpackConfig(args: any): webpack.Configuration { }); config.module = { ...config.module, - rules: ((config.module && config.module.rules) || []).map((rule) => { + rules: ((config.module && config.module.rules) || []).map((rule: RuleSetRule) => { if (rule && typeof rule.loader === 'string' && rule.loader.startsWith('file-loader')) { return { ...rule, - loader: args.omitHash - ? rule.loader - : `file-loader?hash=sha512&digest=hex&name=[path][name].[hash:base64:8].[ext]` + options: args.omitHash + ? rule.options + : { + hash: 'sha512', + digest: 'hex', + name: '[path][name].[hash:base64:8].[ext]' + } }; } diff --git a/src/functional.config.ts b/src/functional.config.ts index 5a0472b6..089e318a 100644 --- a/src/functional.config.ts +++ b/src/functional.config.ts @@ -1,4 +1,4 @@ -import * as CleanWebpackPlugin from 'clean-webpack-plugin'; +import { CleanWebpackPlugin } from 'clean-webpack-plugin'; import * as globby from 'globby'; import * as path from 'path'; import * as webpack from 'webpack'; @@ -26,7 +26,7 @@ function webpackConfig(args: any): webpack.Configuration { }; config.plugins = [ ...plugins!, - new CleanWebpackPlugin(['functional'], { root: path.join(outputPath, 'test'), verbose: false }) + new CleanWebpackPlugin({ cleanAfterEveryBuildPatterns: ['test/functional'], verbose: false }) ]; config.output = { ...output, diff --git a/src/typings/copy-webpack-plugin.d.ts b/src/typings/copy-webpack-plugin.d.ts new file mode 100644 index 00000000..189046de --- /dev/null +++ b/src/typings/copy-webpack-plugin.d.ts @@ -0,0 +1,119 @@ +declare module 'copy-webpack-plugin' { + // Type definitions for copy-webpack-plugin 6.0 + // Project: https://github.com/webpack-contrib/copy-webpack-plugin + // Definitions by: flying-sheep + // avin-kavish + // Piotr Błażejewicz + // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + + /// + + import { Compilation } from 'webpack'; + + interface ObjectPattern { + /** + * File source path or glob + * {@link https://webpack.js.org/plugins/copy-webpack-plugin/#from} + * @default undefined + */ + from: string; + + /** + * Path or webpack file-loader patterns. defaults: + * output root if `from` is file or dir. + * resolved glob path if `from` is glob. + * {@link https://webpack.js.org/plugins/copy-webpack-plugin/#to} + * @default compiler.options.output + */ + to?: string; + + /** + * A path that determines how to interpret the `from` path. + * {@link https://webpack.js.org/plugins/copy-webpack-plugin/#context} + * @default options.context | compiler.options.context + */ + context?: string; + + /** + * Allows to configure the glob pattern matching library used by the plugin. + * {@link https://webpack.js.org/plugins/copy-webpack-plugin/#globoptions} + */ + globOptions?: object; + + /** + * How to interpret `to`. default: undefined + * `file` - if 'to' has extension or 'from' is file. + * `dir` - if 'from' is directory, 'to' has no extension or ends in '/'. + * `template` - if 'to' contains a template pattern. + * @default undefined + */ + toType?: 'file' | 'dir' | 'template'; + + /** + * Overwrites files already in `compilation.assets` (usually added by other plugins. + * {@link https://webpack.js.org/plugins/copy-webpack-plugin/#force} + * @default false + */ + force?: boolean; + + /** + * Removes all directory references and only copies file names. (default: `false`) + * If files have the same name, the result is non-deterministic. + * {@link https://webpack.js.org/plugins/copy-webpack-plugin/#flatten} + * @default false + */ + flatten?: boolean; + + /** + * Function that modifies file contents before writing to webpack. (default: `(content, path) => content`) + * {@link https://webpack.js.org/plugins/copy-webpack-plugin/#transform} + * @default undefined + */ + transform?: (content: Buffer, absoluteFrom: string) => string | Buffer | Promise; + + /** + * Enable/disable and configure caching. Default path to cache directory: node_modules/.cache/copy-webpack-plugin. + * @default false + */ + cacheTransform?: boolean | string | object; + + /** + * Allows to modify the writing path. + * Returns the new path or a promise that resolves into the new path + * @default undefined + */ + transformPath?: (targetPath: string, absolutePath: string) => string | Promise; + + /** + * Doesn't generate an error on missing file(s); + * @default false + */ + noErrorOnMissing?: boolean; + } + + type StringPattern = string; + + interface Options { + /** + * Limits the number of simultaneous requests to fs + * @default 100 + */ + concurrency?: number; + } + + interface CopyPluginOptions { + patterns: ReadonlyArray; + options?: Options; + } + + class CopyPlugin { + constructor(options?: CopyPluginOptions); + } + + /** + * Copy files and directories with webpack + */ + const copyWebpackPlugin: typeof CopyPlugin; + + export = copyWebpackPlugin; +} diff --git a/src/typings/mini-css-extract-plugin.d.ts b/src/typings/mini-css-extract-plugin.d.ts new file mode 100644 index 00000000..8ca4d9d1 --- /dev/null +++ b/src/typings/mini-css-extract-plugin.d.ts @@ -0,0 +1,53 @@ +// Type definitions for mini-css-extract-plugin 0.9 +// Project: https://github.com/webpack-contrib/mini-css-extract-plugin +// Definitions by: JounQin +// Katsuya Hino +// Spencer Miskoviak +// Piotr Błażejewicz +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +declare module 'mini-css-extract-plugin' { + import { Compilation } from 'webpack'; + /** + * Lightweight CSS extraction webpack plugin + * This plugin extract CSS into separate files. It creates a CSS file per JS file which contains CSS. It supports On-Demand-Loading of CSS and SourceMaps. + * Configuration Detail: https://github.com/webpack-contrib/mini-css-extract-plugin#configuration + */ + class MiniCssExtractPlugin { + /** webpack loader used always at the end of loaders list */ + static loader: string; + + constructor(options?: MiniCssExtractPlugin.PluginOptions); + } + + namespace MiniCssExtractPlugin { + interface PluginOptions { + /** + * Options similar to the same options in webpackOptions.output, both options are optional + * May contain `[name]`, `[id]`, `hash` and `[chunkhash]` + */ + filename?: string; + chunkFilename?: string; + /** + * For projects where CSS ordering has been mitigated through consistent + * use of scoping or naming conventions, the CSS order warnings can be + * disabled by setting this flag to true for the plugin. + */ + ignoreOrder?: boolean; + /** + * By default, mini-css-extract-plugin generates JS modules that use the CommonJS + * modules syntax. There are some cases in which using ES modules is beneficial, + * like in the case of module concatenation and tree shaking. + */ + esModule?: boolean; + /** + * With the `moduleFilename` option you can use chunk data to customize the filename. + * This is particularly useful when dealing with multiple entry points + * and wanting to get more control out of the filename for a given entry point/chunk + */ + moduleFilename?: (chunk: Compilation.Chunk) => string; + } + } + + export = MiniCssExtractPlugin; +} diff --git a/src/unit.config.ts b/src/unit.config.ts index eb869d26..485215d7 100644 --- a/src/unit.config.ts +++ b/src/unit.config.ts @@ -1,4 +1,3 @@ -import * as CleanWebpackPlugin from 'clean-webpack-plugin'; import * as globby from 'globby'; import * as path from 'path'; import * as webpack from 'webpack'; @@ -23,10 +22,7 @@ function webpackConfig(args: any): webpack.Configuration { return tests; }; - config.plugins = [ - ...plugins!, - new CleanWebpackPlugin(['unit'], { root: path.join(outputPath, 'test'), verbose: false }) - ]; + config.plugins = [...plugins!]; config.output = { ...output, path: path.join(outputPath, 'test', 'unit') diff --git a/tsconfig.json b/tsconfig.json index 5198ad07..b1c00d0a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,6 +2,7 @@ "extends": "./node_modules/@dojo/scripts/tsconfig/commonjs.json", "compilerOptions": { "declaration": false, + "skipLibCheck": true, "target": "es2015", "types": [ "intern", "cypress" ], "lib": [ From 39ea9d1ae9115a33bd0450007cbbf83cecaf3932 Mon Sep 17 00:00:00 2001 From: Bradley Maier Date: Thu, 10 Sep 2020 14:50:41 -0700 Subject: [PATCH 03/12] WIP --- package.json | 4 +- src/base.config.ts | 12 ++-- src/dist.config.ts | 6 +- src/logger.ts | 6 +- src/main.ts | 5 +- test-app/package-lock.json | 110 ++++++++++++++++++++----------------- test-app/package.json | 6 +- 7 files changed, 84 insertions(+), 65 deletions(-) diff --git a/package.json b/package.json index 081bdae4..7f5684fc 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "serve": "serve -p 9999", "test:ci": "run-p --race serve test", "test:cypress": "cypress run", - "test": "run-s build artifact:package artifact:install build artifact:build:* test:cypress", + "test": "run-s build artifact:package artifact:install artifact:build:* test:cypress", "uploadCoverage": "codecov --file=coverage/coverage.json", "watch:ts": "dojo-tsc-watcher -p tsconfig.json -- dojo-package", "watch": "run-p watch:ts \"build:static:** -- --watch\"" @@ -152,7 +152,7 @@ "stylelint": "9.10.1", "stylelint-webpack-plugin": "0.10.5", "terser-webpack-plugin": "1.1.0", - "ts-loader": "5.3.0", + "ts-loader": "8.0.3", "ts-node": "7.0.1", "tsconfig-paths-webpack-plugin": "3.2.0", "typed-css-modules": "0.3.1", diff --git a/src/base.config.ts b/src/base.config.ts index b76bc80c..f87e6561 100644 --- a/src/base.config.ts +++ b/src/base.config.ts @@ -48,7 +48,7 @@ export const packageName = packageJson.name || ''; const esLintPath = path.join(basePath, '.eslintrc.json'); const esLint = existsSync(esLintPath) ? require(esLintPath) : false; -(process as any).traceDeprecation = true; +(process as any).noDeprecation = true; function getEsLintExclusions() { if (esLint && esLint.ignorePatterns) { @@ -350,15 +350,17 @@ export default function webpackConfigFactory(args: any): webpack.Configuration { if (!isExperimentalSpeed || isLegacy) { postCssModuleLoader.push({ - loader: 'postcss-loader?sourceMap', + loader: 'postcss-loader', options: { + sourceMap: true, ident: 'postcss', plugins: [postcssImport(postcssImportConfig), postcssPresetEnv(postcssPresetConfig)] } }); cssLoader.push({ - loader: 'postcss-loader?sourceMap', + loader: 'postcss-loader', options: { + sourceMap: true, ident: 'postcss', plugins: [postcssImport(postcssImportConfig), postcssPresetEnv(postcssPresetConfig)] } @@ -417,7 +419,7 @@ export default function webpackConfigFactory(args: any): webpack.Configuration { : { cacheGroups: { default: false, - vendors: false, + defaultVendors: false, main: { chunks: 'all', minChunks: 1, @@ -452,7 +454,7 @@ export default function webpackConfigFactory(args: any): webpack.Configuration { } } }, - devtool: 'source-map', + devtool: false, watchOptions: { ignored: 'node_modules' }, plugins: removeEmpty([ new StyleLintPlugin({ diff --git a/src/dist.config.ts b/src/dist.config.ts index f3ff9920..410914e6 100644 --- a/src/dist.config.ts +++ b/src/dist.config.ts @@ -66,9 +66,13 @@ function webpackConfig(args: any): webpack.Configuration { if (rule && typeof rule.loader === 'string' && rule.loader.startsWith('file-loader') && !rule.issuer) { return { ...rule, + options: undefined, loader: undefined, use: [ - rule.loader, + { + loader: rule.loader, + options: rule.options + }, { loader: 'image-webpack-loader', options: args.imageOptimization !== true ? args.imageOptimization : {} diff --git a/src/logger.ts b/src/logger.ts index b99e2bc1..6e41c467 100644 --- a/src/logger.ts +++ b/src/logger.ts @@ -57,7 +57,11 @@ export default function logger(stats: any, config: any, runningMessage: string = signOff = chalk.yellow('The build completed with warnings.'); warnings = ` ${chalk.yellow('warnings:')}${chalk.gray( - stats.warnings.reduce((warnings: string, warning: string) => `${warnings}\n${stripAnsi(warning)}`, '') + stats.warnings.reduce( + (warnings: string, warning: string | { message?: string }) => + `${warnings}\n${stripAnsi(typeof warning === 'string' ? warning : warning && warning.message)}`, + '' + ) )} `; } diff --git a/src/main.ts b/src/main.ts index ca3d961d..94294551 100644 --- a/src/main.ts +++ b/src/main.ts @@ -286,8 +286,9 @@ async function serve(configs: webpack.Configuration[], args: any) { }); } -function warningsFilter(warning: string) { - return warning.includes('[mini-css-extract-plugin]\nConflicting order between'); +function warningsFilter(warning: string | { message?: string }) { + const message = (typeof warning === 'string' ? warning : warning && warning.message) || ''; + return message.includes('[mini-css-extract-plugin]\nConflicting order between'); } const command: Command = { diff --git a/test-app/package-lock.json b/test-app/package-lock.json index a1a69b1b..60e6880b 100644 --- a/test-app/package-lock.json +++ b/test-app/package-lock.json @@ -5,9 +5,9 @@ "requires": true, "dependencies": { "@dojo/cli": { - "version": "7.0.0-alpha.1", - "resolved": "https://registry.npmjs.org/@dojo/cli/-/cli-7.0.0-alpha.1.tgz", - "integrity": "sha512-bw32eLt38YuPiuqqnq3flHVVLKbqmmW1FhPXZN2T362CDEtKzPrGCv5ffoTzQb126Ni2k8fL5qCTwC4Vc/YPEw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@dojo/cli/-/cli-7.0.0.tgz", + "integrity": "sha512-SSvRZjlyWO1EsWptoLgt+JhO04dKZ69ntH5D7J1MTKcVTVqTUB3FFaSxSxxXIlCMY8G4oOGlFeo32M/SEdenDQ==", "requires": { "@speedy/json-extends": "1.2.0", "ajv": "6.6.2", @@ -38,9 +38,9 @@ } }, "@dojo/framework": { - "version": "7.0.0-alpha.16", - "resolved": "https://registry.npmjs.org/@dojo/framework/-/framework-7.0.0-alpha.16.tgz", - "integrity": "sha512-dgzJmQPD90WWDmrzNRc0EagdOTlm5x8bS27wsbVMAL00YXd6vYv658Rh3SX9yjutFfy+M240aE6kSSkAqCJZaA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@dojo/framework/-/framework-7.0.2.tgz", + "integrity": "sha512-vnNoq7POZ/ao/AYzyrRfbxPVNrhwaH/8X31fkg4SW17+zpSXnpi7jsZZUobEVHbfdH4rgPiOmn7H3eiv24uhhw==", "requires": { "@types/cldrjs": "0.4.20", "@types/globalize": "0.0.34", @@ -49,6 +49,7 @@ "cldrjs": "^0.5.0", "cross-fetch": "3.0.2", "css-select-umd": "1.3.0-rc0", + "css-vars-ponyfill": "2.3.0", "diff": "3.5.0", "globalize": "1.4.0", "immutable": "3.8.2", @@ -401,9 +402,9 @@ } }, "cldrjs": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/cldrjs/-/cldrjs-0.5.1.tgz", - "integrity": "sha512-xyiP8uAm8K1IhmpDndZLraloW1yqu0L+HYdQ7O1aGPxx9Cr+BMnPANlNhSt++UKfxytL2hd2NPXgTjiy7k43Ew==" + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/cldrjs/-/cldrjs-0.5.4.tgz", + "integrity": "sha512-6QkI7oPLUZ9vA5BQAmUOfh5JIpESfnYy/M8d7Ddl9Yx+z2TAnQgnc3kbgjkIgxsk5Y0tOY+n6itMWXzQQQ2IWg==" }, "cli-boxes": { "version": "1.0.0", @@ -419,9 +420,9 @@ } }, "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==" }, "cliui": { "version": "4.1.0", @@ -565,6 +566,11 @@ "nth-check": "^1.0.1" } }, + "css-vars-ponyfill": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/css-vars-ponyfill/-/css-vars-ponyfill-2.3.0.tgz", + "integrity": "sha512-3f8nyk9tLbpQMaSSMIQKTPplBNF44E/uxmbqq9LC3TETK5Q0eX1FabpDi6QdztDBGEkW7qBamxi/F6qOV90brA==" + }, "css-what": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", @@ -663,9 +669,9 @@ } }, "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", + "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==", "requires": { "is-obj": "^1.0.0" } @@ -701,11 +707,21 @@ "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==" }, "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "requires": { - "iconv-lite": "~0.4.13" + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", + "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } } }, "end-of-stream": { @@ -717,9 +733,9 @@ } }, "entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", - "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", + "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==" }, "err-code": { "version": "1.1.2", @@ -841,9 +857,9 @@ }, "dependencies": { "type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", - "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.1.0.tgz", + "integrity": "sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA==" } } }, @@ -1052,9 +1068,9 @@ } }, "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" }, "har-schema": { "version": "2.0.0", @@ -1289,11 +1305,6 @@ "path-is-inside": "^1.0.1" } }, - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" - }, "is-redirect": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", @@ -1419,9 +1430,9 @@ } }, "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" }, "lowercase-keys": { "version": "1.0.1", @@ -1605,9 +1616,9 @@ } }, "npm-registry-fetch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.3.tgz", - "integrity": "sha512-WGvUx0lkKFhu9MbiGFuT9nG2NpfQ+4dCJwRwwtK2HK5izJEvwDxMeUyqbuMS7N/OkpVCqDorV6rO5E4V9F8lJw==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.7.tgz", + "integrity": "sha512-cny9v0+Mq6Tjz+e0erFAB+RYJ/AVGzkjnISiobqP8OWj9c9FLoZZu8/SPSKJWE17F1tk4018wfjV+ZbIbqC7fQ==", "requires": { "JSONStream": "^1.3.4", "bluebird": "^3.5.1", @@ -2047,12 +2058,9 @@ } }, "run-async": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz", - "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==", - "requires": { - "is-promise": "^2.1.0" - } + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" }, "run-queue": { "version": "1.0.3", @@ -2063,9 +2071,9 @@ } }, "rxjs": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", - "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", "requires": { "tslib": "^1.9.0" } @@ -2424,9 +2432,9 @@ } }, "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", "requires": { "punycode": "^2.1.0" } diff --git a/test-app/package.json b/test-app/package.json index e88ddb47..b82c9a8d 100644 --- a/test-app/package.json +++ b/test-app/package.json @@ -18,11 +18,11 @@ "author": "", "license": "ISC", "dependencies": { - "@dojo/cli": "7.0.0-alpha.1", - "@dojo/framework": "7.0.0-alpha.16", + "@dojo/cli": "^7.0.0", + "@dojo/framework": "^7.0.2", "@fortawesome/fontawesome-free": "5.3.1", - "tslib": "~1.9.1", "cldr-data": "36.0.0", + "tslib": "~1.9.1", "typescript": "~3.4.5" }, "devDependencies": { From 1299c69c6f46f3efc8560060bcb3c1de4120168e Mon Sep 17 00:00:00 2001 From: Bradley Maier Date: Thu, 10 Sep 2020 17:58:12 -0700 Subject: [PATCH 04/12] WIP --- tests/integration/build.spec.ts | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/tests/integration/build.spec.ts b/tests/integration/build.spec.ts index 5eb0aaf5..892ee72d 100644 --- a/tests/integration/build.spec.ts +++ b/tests/integration/build.spec.ts @@ -9,12 +9,11 @@ Currently Rendered by BTR: false` cy.get('#app-root').should('contain', 'Lazy Widget using dojorc configuration'); cy.get('#div').should('have.css', 'background-color', 'rgba(0, 0, 0, 0.5)'); cy.get('#vars').should('have.css', 'outline-color', 'rgba(255, 0, 0, 0.5)'); - cy.get('script[src^="lazy"]').should('exist'); - cy.get('script[src^="widgets"]').should('exist'); - cy.get('script[src^="src/Foo"]').should('exist'); - cy.get('script[src^="src/RoutedWidget"]').should('exist'); - cy.get('script[src^="src/ChildRoutedWidget"]').should('not.exist'); - cy.get('script[src^="ignored"]').should('not.exist'); + cy.get('link[href^="lazy"]').should('exist'); + cy.get('link[href^="widgets"]').should('exist'); + cy.get('link[href^="src/Foo"]').should('exist'); + cy.get('link[href^="src/RoutedWidget"]').should('exist'); + cy.get('link[href^="ignored"]').should('not.exist'); cy.get('#div[nodeenv=production]').should(isDist ? 'exist' : 'not.exist'); cy.get('#div[has-prod=prod]').should(isDist ? 'exist' : 'not.exist'); cy.get('#div[dojo-debug=true]').should(isDist ? 'not.exist' : 'exist'); From 55b3d0a0617d779ab8ef727906e2eb249ed9e817 Mon Sep 17 00:00:00 2001 From: Bradley Maier Date: Fri, 11 Sep 2020 11:29:53 -0700 Subject: [PATCH 05/12] Use unique name --- src/base.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/base.config.ts b/src/base.config.ts index f87e6561..b23ad599 100644 --- a/src/base.config.ts +++ b/src/base.config.ts @@ -400,7 +400,7 @@ export default function webpackConfigFactory(args: any): webpack.Configuration { library: `lib_${libraryName}`, umdNamedDefine: true, filename: '[name].js', - // jsonpFunction: `dojoWebpackJsonp${libraryName}`, + uniqueName: `dojoWebpack${libraryName}`, libraryTarget: 'umd', path: path.resolve('./output') }, From 6011f40cffa0f58ddd38bf953da4a5aa6dcc2876 Mon Sep 17 00:00:00 2001 From: Bradley Maier Date: Mon, 14 Sep 2020 09:07:58 -0700 Subject: [PATCH 06/12] webpack 5 updates --- package.json | 6 +++--- src/base.config.ts | 6 ++++++ src/dev.config.ts | 6 +++++- src/dist.config.ts | 12 ++++++++---- src/schema.json | 8 ++++---- test-app/.dojorc-dev-pwa | 4 ++-- test-app/.dojorc-dev-pwa-evergreen | 4 ++-- test-app/.dojorc-dist-pwa | 4 ++-- test-app/.dojorc-dist-pwa-evergreen | 4 ++-- tests/integration/build.spec.ts | 12 ++++++------ 10 files changed, 40 insertions(+), 26 deletions(-) diff --git a/package.json b/package.json index 7f5684fc..f8beff0b 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "serve": "serve -p 9999", "test:ci": "run-p --race serve test", "test:cypress": "cypress run", - "test": "run-s build artifact:package artifact:install artifact:build:* test:cypress", + "test": "run-s build artifact:package artifact:install build intern artifact:build:* test:cypress", "uploadCoverage": "codecov --file=coverage/coverage.json", "watch:ts": "dojo-tsc-watcher -p tsconfig.json -- dojo-package", "watch": "run-p watch:ts \"build:static:** -- --watch\"" @@ -157,11 +157,11 @@ "tsconfig-paths-webpack-plugin": "3.2.0", "typed-css-modules": "0.3.1", "umd-compat-loader": "2.1.1", - "webpack": "5.0.0-beta.29", + "webpack": "5.0.0-beta.30", "webpack-hot-middleware": "2.24.3", "webpack-manifest-plugin": "3.0.0-rc.0", "webpack-mild-compile": "3.3.1", - "webpack-pwa-manifest": "3.7.1", + "webpack-pwa-manifest": "4.2.0", "wrapper-webpack-plugin": "2.0.0" } } diff --git a/src/base.config.ts b/src/base.config.ts index b23ad599..271082f2 100644 --- a/src/base.config.ts +++ b/src/base.config.ts @@ -549,6 +549,12 @@ export default function webpackConfigFactory(args: any): webpack.Configuration { // `file` uses the pattern `loaderPath!filePath`, hence the regex test noParse: (file: string) => assetsDirPattern.test(file), rules: removeEmpty([ + { + test: /\.m?js/, + resolve: { + fullySpecified: false + } + }, { test: indexHtmlPattern, use: { diff --git a/src/dev.config.ts b/src/dev.config.ts index 158fc7f0..1e7d23c1 100644 --- a/src/dev.config.ts +++ b/src/dev.config.ts @@ -51,7 +51,11 @@ function webpackConfig(args: any): webpack.Configuration { base, inject: true, chunks: [entryName], - meta: manifest ? { 'mobile-web-app-capable': 'yes' } : {}, + meta: manifest + ? { + 'mobile-web-app-capable': 'yes' + } + : {}, template: 'src/index.html', cache: false }), diff --git a/src/dist.config.ts b/src/dist.config.ts index 410914e6..ab1dcd4b 100644 --- a/src/dist.config.ts +++ b/src/dist.config.ts @@ -101,7 +101,11 @@ function webpackConfig(args: any): webpack.Configuration { base, inject: true, chunks: [entryName], - meta: manifest ? { 'mobile-web-app-capable': 'yes' } : {}, + meta: manifest + ? { + 'mobile-web-app-capable': 'yes' + } + : {}, template: 'src/index.html', cache: false }), @@ -167,7 +171,7 @@ function webpackConfig(args: any): webpack.Configuration { config.plugins = config.plugins.map((plugin: any) => { if (plugin instanceof MiniCssExtractPlugin) { return new MiniCssExtractPlugin({ - filename: args.omitHash ? '[name].bundle.css' : '[name].[contenthash].bundle.css' + filename: args.omitHash ? '[name].bundle.css' : '[name].bundle.css' }); } return plugin; @@ -215,8 +219,8 @@ function webpackConfig(args: any): webpack.Configuration { config.output = { ...output, path: outputPath, - chunkFilename: args.omitHash ? '[name].bundle.js' : '[name].[chunkhash].bundle.js', - filename: args.omitHash ? '[name].bundle.js' : '[name].[chunkhash].bundle.js' + chunkFilename: args.omitHash ? '[name].bundle.js' : '[name].bundle.js', + filename: args.omitHash ? '[name].bundle.js' : '[name].bundle.js' }; return config; diff --git a/src/schema.json b/src/schema.json index b9ff43f9..5692889f 100644 --- a/src/schema.json +++ b/src/schema.json @@ -391,10 +391,10 @@ "strategy": { "type": "string", "enum": [ - "networkFirst", - "cacheFirst", - "networkOnly", - "staleWhileRevalidate" + "NetworkFirst", + "CacheFirst", + "NetworkOnly", + "StaleWhileRevalidate" ] }, "expiration": { diff --git a/test-app/.dojorc-dev-pwa b/test-app/.dojorc-dev-pwa index f6bf7c7a..7d57d9bc 100644 --- a/test-app/.dojorc-dev-pwa +++ b/test-app/.dojorc-dev-pwa @@ -35,8 +35,8 @@ "clientsClaim": true, "excludeBundles": [ "src/LazyWidget" ], "routes": [ - { "urlPattern": "\\.(jpg|png|gif|svg)$", "strategy": "cacheFirst", "expiration": { "maxEntries": 25 } }, - { "urlPattern": "/api", "strategy": "networkFirst" } + { "urlPattern": "\\.(jpg|png|gif|svg)$", "strategy": "CacheFirst", "expiration": { "maxEntries": 25 } }, + { "urlPattern": "/api", "strategy": "NetworkFirst" } ] } }, diff --git a/test-app/.dojorc-dev-pwa-evergreen b/test-app/.dojorc-dev-pwa-evergreen index 10d577af..33dc86ec 100644 --- a/test-app/.dojorc-dev-pwa-evergreen +++ b/test-app/.dojorc-dev-pwa-evergreen @@ -34,8 +34,8 @@ "clientsClaim": true, "excludeBundles": [ "src/LazyWidget" ], "routes": [ - { "urlPattern": "\\.(jpg|png|gif|svg)$", "strategy": "cacheFirst", "expiration": { "maxEntries": 25 } }, - { "urlPattern": "/api", "strategy": "networkFirst" } + { "urlPattern": "\\.(jpg|png|gif|svg)$", "strategy": "CacheFirst", "expiration": { "maxEntries": 25 } }, + { "urlPattern": "/api", "strategy": "NetworkFirst" } ] } }, diff --git a/test-app/.dojorc-dist-pwa b/test-app/.dojorc-dist-pwa index 0fd2834b..4a12f5b1 100644 --- a/test-app/.dojorc-dist-pwa +++ b/test-app/.dojorc-dist-pwa @@ -34,8 +34,8 @@ "clientsClaim": true, "excludeBundles": [ "src/LazyWidget" ], "routes": [ - { "urlPattern": "\\.(jpg|png|gif|svg)$", "strategy": "cacheFirst", "expiration": { "maxEntries": 25 } }, - { "urlPattern": "/api", "strategy": "networkFirst" } + { "urlPattern": "\\.(jpg|png|gif|svg)$", "strategy": "CacheFirst", "expiration": { "maxEntries": 25 } }, + { "urlPattern": "/api", "strategy": "NetworkFirst" } ] } }, diff --git a/test-app/.dojorc-dist-pwa-evergreen b/test-app/.dojorc-dist-pwa-evergreen index e9189ffa..359f7af1 100644 --- a/test-app/.dojorc-dist-pwa-evergreen +++ b/test-app/.dojorc-dist-pwa-evergreen @@ -33,8 +33,8 @@ "clientsClaim": true, "excludeBundles": [ "src/LazyWidget" ], "routes": [ - { "urlPattern": "\\.(jpg|png|gif|svg)$", "strategy": "cacheFirst", "expiration": { "maxEntries": 25 } }, - { "urlPattern": "/api", "strategy": "networkFirst" } + { "urlPattern": "\\.(jpg|png|gif|svg)$", "strategy": "CacheFirst", "expiration": { "maxEntries": 25 } }, + { "urlPattern": "/api", "strategy": "NetworkFirst" } ] } }, diff --git a/tests/integration/build.spec.ts b/tests/integration/build.spec.ts index 892ee72d..01655809 100644 --- a/tests/integration/build.spec.ts +++ b/tests/integration/build.spec.ts @@ -1,11 +1,6 @@ describe('build', () => { function testUrl(dir: string, isDist: boolean, isPwa: boolean) { cy.visit(`/test-app/output/${dir}/`); - cy.get('#div').should( - 'contain', - `Built with Build Time Render: true -Currently Rendered by BTR: false` - ); cy.get('#app-root').should('contain', 'Lazy Widget using dojorc configuration'); cy.get('#div').should('have.css', 'background-color', 'rgba(0, 0, 0, 0.5)'); cy.get('#vars').should('have.css', 'outline-color', 'rgba(255, 0, 0, 0.5)'); @@ -18,6 +13,11 @@ Currently Rendered by BTR: false` cy.get('#div[has-prod=prod]').should(isDist ? 'exist' : 'not.exist'); cy.get('#div[dojo-debug=true]').should(isDist ? 'not.exist' : 'exist'); cy.get('#div[has-ci=ci]').should(isDist ? 'not.exist' : 'exist'); + cy.get('#div').should( + 'contain', + `Built with Build Time Render: true +Currently Rendered by BTR: false` + ); cy.get('meta[name="mobile-web-app-capable"]').should(isPwa ? 'exist' : 'not.exist'); cy.get('meta[name="apple-mobile-web-app-capable"]').should(isPwa ? 'exist' : 'not.exist'); @@ -54,7 +54,7 @@ Currently Rendered by BTR: false` it('dev-pwa', () => { testUrl('dev-pwa', false, true); }); - it('dev-app', () => { + it('dev-pwa-evergreen', () => { testUrl('dev-pwa-evergreen', false, true); }); }); From a7614a9953f00aecc6dc8ec922c69e43aa01e0de Mon Sep 17 00:00:00 2001 From: Bradley Maier Date: Mon, 14 Sep 2020 09:19:39 -0700 Subject: [PATCH 07/12] Add local build --- dojo-webpack-contrib.tgz | Bin 0 -> 695447 bytes package.json | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 dojo-webpack-contrib.tgz diff --git a/dojo-webpack-contrib.tgz b/dojo-webpack-contrib.tgz new file mode 100644 index 0000000000000000000000000000000000000000..b4301f156163c110e1be0edc098409bb98474152 GIT binary patch literal 695447 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