Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 13 additions & 13 deletions lib/config-generator.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,19 +30,19 @@ import tsLoaderUtil from './loaders/typescript.js';
import vueLoaderUtil from './loaders/vue.js';
import logger from './logger.js';
// plugins utils
import assetOutputDisplay from './plugins/asset-output-display.js';
import cssMinimizerPluginUtil from './plugins/css-minimizer.js';
import definePluginUtil from './plugins/define.js';
import deleteUnusedEntriesPluginUtil from './plugins/delete-unused-entries.js';
import entryFilesManifestPlugin from './plugins/entry-files-manifest.js';
import friendlyErrorPluginUtil from './plugins/friendly-errors.js';
import jsMinimizerPluginUtil from './plugins/js-minimizer.js';
import manifestPluginUtil from './plugins/manifest.js';
import miniCssExtractPluginUtil from './plugins/mini-css-extract.js';
import notifierPluginUtil from './plugins/notifier.js';
import PluginPriorities from './plugins/plugin-priorities.js';
import variableProviderPluginUtil from './plugins/variable-provider.js';
import vuePluginUtil from './plugins/vue.js';
import assetOutputDisplay from './plugins/asset-output-display.ts';
import cssMinimizerPluginUtil from './plugins/css-minimizer.ts';
import definePluginUtil from './plugins/define.ts';
import deleteUnusedEntriesPluginUtil from './plugins/delete-unused-entries.ts';
import entryFilesManifestPlugin from './plugins/entry-files-manifest.ts';
import friendlyErrorPluginUtil from './plugins/friendly-errors.ts';
import jsMinimizerPluginUtil from './plugins/js-minimizer.ts';
import manifestPluginUtil from './plugins/manifest.ts';
import miniCssExtractPluginUtil from './plugins/mini-css-extract.ts';
import notifierPluginUtil from './plugins/notifier.ts';
import PluginPriorities from './plugins/plugin-priorities.ts';
import variableProviderPluginUtil from './plugins/variable-provider.ts';
import vuePluginUtil from './plugins/vue.ts';
import applyOptionsCallback from './utils/apply-options-callback.ts';
import copyEntryTmpName from './utils/copyEntryTmpName.ts';
import getVueVersion from './utils/get-vue-version.ts';
Expand Down
8 changes: 4 additions & 4 deletions lib/loaders/typescript.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,10 @@ export default {
// force transpileOnly to speed up
config.transpileOnly = true;

// add forked ts types plugin to the stack
const { default: forkedTypesPluginUtil } =
await import('../plugins/forked-ts-types.js');
forkedTypesPluginUtil(webpackConfig);
// add forked ts types plugin to the stack.
// eslint-disable-next-line n/no-missing-import -- this `.js` file dynamically imports a migrated `.ts` plugin; eslint-plugin-n can't resolve it and rewriteRelativeImportExtensions does not rewrite dynamic import() in `.js`. Remove once this loader is migrated to TS.
const forkedTs = await import('../plugins/forked-ts-types.js');
forkedTs.default(webpackConfig);
}

// allow to import .vue files
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,27 +7,21 @@
* file that was distributed with this source code.
*/

/**
* @import WebpackConfig from '../WebpackConfig.js'
*/

/**
* @import FriendlyErrorsWebpackPlugin from '@kocal/friendly-errors-webpack-plugin'
*/
import type FriendlyErrorsWebpackPlugin from '@kocal/friendly-errors-webpack-plugin';

import pathUtil from '../config/path-util.js';
import AssetOutputDisplayPlugin from '../friendly-errors/asset-output-display-plugin.js';
import PluginPriorities from './plugin-priorities.js';
import type WebpackConfig from '../WebpackConfig.js';
import PluginPriorities from './plugin-priorities.ts';

/**
* Updates plugins array passed adding AssetOutputDisplayPlugin instance
*
* @param {Array} plugins
* @param {WebpackConfig} webpackConfig
* @param {FriendlyErrorsWebpackPlugin} friendlyErrorsPlugin
* @returns {void}
*/
export default function (plugins, webpackConfig, friendlyErrorsPlugin) {
export default function (
plugins: Array<{ plugin: object; priority: number }>,
webpackConfig: WebpackConfig,
friendlyErrorsPlugin: FriendlyErrorsWebpackPlugin
): void {
if (webpackConfig.useDevServer()) {
return;
}
Expand Down
11 changes: 2 additions & 9 deletions lib/plugins/css-minimizer.js → lib/plugins/css-minimizer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,13 @@
* file that was distributed with this source code.
*/

/**
* @import WebpackConfig from '../WebpackConfig.js'
*/

import MinimizerPlugin from 'minimizer-webpack-plugin';

import applyOptionsCallback from '../utils/apply-options-callback.ts';
import { checkCssMinifierPackages } from '../utils/minifier-check.ts';
import type WebpackConfig from '../WebpackConfig.js';

/**
* @param {WebpackConfig} webpackConfig
* @returns {object}
*/
export default function (webpackConfig) {
export default function (webpackConfig: WebpackConfig) {
const minimizerPluginOptions = {
test: /\.css(\?.*)?$/i,
};
Expand Down
17 changes: 6 additions & 11 deletions lib/plugins/define.js → lib/plugins/define.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,16 @@
* file that was distributed with this source code.
*/

/**
* @import WebpackConfig from '../WebpackConfig.js'
*/

import webpack from 'webpack';

import applyOptionsCallback from '../utils/apply-options-callback.ts';
import PluginPriorities from './plugin-priorities.js';
import type WebpackConfig from '../WebpackConfig.js';
import PluginPriorities from './plugin-priorities.ts';

/**
* @param {Array} plugins
* @param {WebpackConfig} webpackConfig
* @returns {void}
*/
export default function (plugins, webpackConfig) {
export default function (
plugins: Array<{ plugin: object; priority: number }>,
webpackConfig: WebpackConfig
): void {
const definePluginOptions = {
'process.env.NODE_ENV': webpackConfig.isProduction() ? '"production"' : '"development"',
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,15 @@
* file that was distributed with this source code.
*/

/**
* @import WebpackConfig from '../WebpackConfig.js'
*/

import copyEntryTmpName from '../utils/copyEntryTmpName.ts';
import DeleteUnusedEntriesJSPlugin from '../webpack/delete-unused-entries-js-plugin.js';
import PluginPriorities from './plugin-priorities.js';
import type WebpackConfig from '../WebpackConfig.js';
import PluginPriorities from './plugin-priorities.ts';

/**
* @param {Array} plugins
* @param {WebpackConfig} webpackConfig
* @returns {void}
*/
export default function (plugins, webpackConfig) {
export default function (
plugins: Array<{ plugin: object; priority: number }>,
webpackConfig: WebpackConfig
): void {
const entries = [...webpackConfig.styleEntries.keys()];

if (webpackConfig.copyFilesConfigs.length > 0) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,14 @@
* file that was distributed with this source code.
*/

/**
* @import WebpackConfig from '../WebpackConfig.js'
*/

import { EntryPointsPlugin } from '../webpack/entry-points-plugin.js';
import PluginPriorities from './plugin-priorities.js';
import type WebpackConfig from '../WebpackConfig.js';
import PluginPriorities from './plugin-priorities.ts';

/**
* @param {Array} plugins
* @param {WebpackConfig} webpackConfig
* @returns {void}
*/
export default function (plugins, webpackConfig) {
export default function (
plugins: Array<{ plugin: object; priority: number }>,
webpackConfig: WebpackConfig
): void {
plugins.push({
plugin: new EntryPointsPlugin({
publicPath: webpackConfig.getRealPublicPath(),
Expand Down
13 changes: 3 additions & 10 deletions lib/plugins/forked-ts-types.js → lib/plugins/forked-ts-types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,13 @@
* file that was distributed with this source code.
*/

/**
* @import WebpackConfig from '../WebpackConfig.js'
*/

import ForkTsCheckerWebpackPlugin from 'fork-ts-checker-webpack-plugin';

import applyOptionsCallback from '../utils/apply-options-callback.ts';
import PluginPriorities from './plugin-priorities.js';
import type WebpackConfig from '../WebpackConfig.js';
import PluginPriorities from './plugin-priorities.ts';

/**
* @param {WebpackConfig} webpackConfig
* @returns {void}
*/
export default function (webpackConfig) {
export default function (webpackConfig: WebpackConfig): void {
const config = {};

webpackConfig.addPlugin(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,6 @@
* file that was distributed with this source code.
*/

/**
* @import WebpackConfig from '../WebpackConfig.js'
*/

import FriendlyErrorsWebpackPlugin from '@kocal/friendly-errors-webpack-plugin';

import missingCssFileFormatter from '../friendly-errors/formatters/missing-css-file.js';
Expand All @@ -20,12 +16,9 @@ import missingCssFileTransformer from '../friendly-errors/transformers/missing-c
import missingLoaderTransformerFactory from '../friendly-errors/transformers/missing-loader.js';
import missingPostCssConfigTransformer from '../friendly-errors/transformers/missing-postcss-config.js';
import applyOptionsCallback from '../utils/apply-options-callback.ts';
import type WebpackConfig from '../WebpackConfig.js';

/**
* @param {WebpackConfig} webpackConfig
* @returns {FriendlyErrorsWebpackPlugin}
*/
export default function (webpackConfig) {
export default function (webpackConfig: WebpackConfig) {
const friendlyErrorsPluginOptions = {
clearConsole: false,
additionalTransformers: [
Expand Down
11 changes: 2 additions & 9 deletions lib/plugins/js-minimizer.js → lib/plugins/js-minimizer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,13 @@
* file that was distributed with this source code.
*/

/**
* @import WebpackConfig from '../WebpackConfig.js'
*/

import MinimizerPlugin from 'minimizer-webpack-plugin';

import applyOptionsCallback from '../utils/apply-options-callback.ts';
import { checkJsMinifierPackages } from '../utils/minifier-check.ts';
import type WebpackConfig from '../WebpackConfig.js';

/**
* @param {WebpackConfig} webpackConfig
* @returns {object}
*/
export default function (webpackConfig) {
export default function (webpackConfig: WebpackConfig) {
const minimizerPluginOptions = {
parallel: true,
minify: MinimizerPlugin.terserMinify,
Expand Down
31 changes: 17 additions & 14 deletions lib/plugins/manifest.js → lib/plugins/manifest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,24 +7,27 @@
* file that was distributed with this source code.
*/

/**
* @import WebpackConfig from '../WebpackConfig.js'
*/

import { WebpackManifestPlugin } from 'webpack-manifest-plugin';

import applyOptionsCallback from '../utils/apply-options-callback.ts';
import copyEntryTmpName from '../utils/copyEntryTmpName.ts';
import manifestKeyPrefixHelper from '../utils/manifest-key-prefix-helper.ts';
import PluginPriorities from './plugin-priorities.js';
import type WebpackConfig from '../WebpackConfig.js';
import PluginPriorities from './plugin-priorities.ts';

/**
* @param {Array} plugins
* @param {WebpackConfig} webpackConfig
* @returns {void}
*/
export default function (plugins, webpackConfig) {
let manifestPluginOptions = {
type ManifestPluginOptions = {
seed: object;
basePath: string;
writeToFileEmit: boolean;
filter: (file: any) => boolean;
map?: (file: any) => any;
};

export default function (
plugins: Array<{ plugin: object; priority: number }>,
webpackConfig: WebpackConfig
): void {
let manifestPluginOptions: ManifestPluginOptions = {
seed: {},
basePath: manifestKeyPrefixHelper(webpackConfig),
// always write a manifest.json file, even with webpack-dev-server
Expand All @@ -38,10 +41,10 @@ export default function (plugins, webpackConfig) {
},
};

manifestPluginOptions = applyOptionsCallback(
manifestPluginOptions = applyOptionsCallback<object>(
webpackConfig.manifestPluginOptionsCallback,
manifestPluginOptions
);
) as ManifestPluginOptions;

const userMapOption = manifestPluginOptions.map;
manifestPluginOptions.map = (file) => {
Expand Down
24 changes: 10 additions & 14 deletions lib/plugins/mini-css-extract.js → lib/plugins/mini-css-extract.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,16 @@
* file that was distributed with this source code.
*/

/**
* @import WebpackConfig from '../WebpackConfig.js'
*/

import MiniCssExtractPlugin from 'mini-css-extract-plugin';

import applyOptionsCallback from '../utils/apply-options-callback.ts';
import PluginPriorities from './plugin-priorities.js';
import type WebpackConfig from '../WebpackConfig.js';
import PluginPriorities from './plugin-priorities.ts';

/**
* @param {Array} plugins
* @param {WebpackConfig} webpackConfig
* @returns {void}
*/
export default function (plugins, webpackConfig) {
export default function (
plugins: Array<{ plugin: object; priority: number }>,
webpackConfig: WebpackConfig
): void {
// Don't add the plugin if CSS extraction is disabled
if (!webpackConfig.extractCss) {
return;
Expand All @@ -37,14 +32,15 @@ export default function (plugins, webpackConfig) {
// This is related to setting optimization.runtimeChunk = 'single';
// See https://github.com/webpack/webpack/issues/6598
let chunkFilename = webpackConfig.useVersioning ? '[name].[contenthash:8].css' : '[name].css';
if (webpackConfig.configuredFilenames.css) {
filename = webpackConfig.configuredFilenames.css;
const configuredCssFilename = (webpackConfig.configuredFilenames as { css?: string }).css;
if (configuredCssFilename) {
filename = configuredCssFilename;

// see above: originally we did NOT set this, because this was
// only for split chunks. But now, sometimes the "entry" CSS chunk
// will use chunkFilename. So, we need to always respect the
// user's wishes
chunkFilename = webpackConfig.configuredFilenames.css;
chunkFilename = configuredCssFilename;
}

const miniCssPluginOptions = {
Expand Down
17 changes: 6 additions & 11 deletions lib/plugins/notifier.js → lib/plugins/notifier.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,15 @@
* file that was distributed with this source code.
*/

/**
* @import WebpackConfig from '../WebpackConfig.js'
*/

import pluginFeatures from '../features.js';
import applyOptionsCallback from '../utils/apply-options-callback.ts';
import PluginPriorities from './plugin-priorities.js';
import type WebpackConfig from '../WebpackConfig.js';
import PluginPriorities from './plugin-priorities.ts';

/**
* @param {Array} plugins
* @param {WebpackConfig} webpackConfig
* @returns {Promise<void>}
*/
export default async function (plugins, webpackConfig) {
export default async function (
plugins: Array<{ plugin: object; priority: number }>,
webpackConfig: WebpackConfig
): Promise<void> {
if (!webpackConfig.useWebpackNotifier) {
return;
}
Expand Down
File renamed without changes.
Loading