We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
.ts
I recently moved from webpacker and now need to generate the manifest manually. With the following assets:
webpacker
login.ts login.scss
I would expect them to be under the same key login, however the manifest looks like:
login
"login": { "assets": { "css": [ "/packs/css/login-ad7f5b7d.css" ] } }, "login.ts": { "assets": { "js": [ "/packs/js/login.ts-8def62838e380d68ae02.js" ] } },
Is this something that must be customized? Or maybe it's typescript-loader I need to change?
typescript-loader
[email protected] [email protected]
{ mode: 'production', entry: { /* ... */ login: '/Users/jgallaso/projects/3scale/porta/app/javascript/packs/login.scss', 'login.ts': '/Users/jgallaso/projects/3scale/porta/app/javascript/packs/login.ts', /* ... */ }, optimization: { runtimeChunk: false, splitChunks: { chunks: 'all' }, minimize: true, minimizer: [ EsbuildPlugin { options: { target: 'es2015', css: true } } ] }, resolve: { extensions: [ '.ts', '.tsx', '.js', '.jsx', '.scss', '.yaml' ], modules: [ '/Users/jgallaso/projects/3scale/porta/app/javascript', '/Users/jgallaso/projects/3scale/porta/app/javascript/src', 'node_modules' ] }, resolveLoader: { modules: [ 'node_modules' ] }, module: { strictExportPresence: true, rules: [ { test: /(.jpg|.jpeg|.png|.gif|.tiff|.ico|.svg|.eot|.otf|.ttf|.woff|.woff2)$/i, include: '/Users/jgallaso/projects/3scale/porta/app/javascript', type: 'asset/resource', generator: { filename: 'static/[hash][ext][query]' } }, { test: /\.css$/, include: [ /node_modules\/@patternfly/, /node_modules\/jquery-ui/, /node_modules\/swagger-ui/ ], use: [ '/Users/jgallaso/projects/3scale/porta/node_modules/mini-css-extract-plugin/dist/loader.js', { loader: '/Users/jgallaso/projects/3scale/porta/node_modules/css-loader/dist/cjs.js', options: { sourceMap: true, importLoaders: 2 } }, { loader: '/Users/jgallaso/projects/3scale/porta/node_modules/esbuild-loader/dist/index.cjs', options: { minify: true } } ] }, { test: /\.(sass|scss)$/, include: '/Users/jgallaso/projects/3scale/porta/app/javascript', use: [ '/Users/jgallaso/projects/3scale/porta/node_modules/mini-css-extract-plugin/dist/loader.js', { loader: '/Users/jgallaso/projects/3scale/porta/node_modules/css-loader/dist/cjs.js', options: { sourceMap: true, importLoaders: 2 } }, { loader: '/Users/jgallaso/projects/3scale/porta/node_modules/sass-loader/dist/cjs.js', options: { sassOptions: { includePaths: [ 'app/javascript/src' ] } } } ] }, { test: /\.(js|jsx)$/, include: [ '/Users/jgallaso/projects/3scale/porta/app/javascript', '/Users/jgallaso/projects/3scale/porta/app/javascript/src' ], exclude: [ /node_modules/, /app\/javascript\/src\/Stats/ ], use: [ { loader: '/Users/jgallaso/projects/3scale/porta/node_modules/esbuild-loader/dist/index.cjs', options: { target: 'es2016' } } ] }, { test: /\.js$/, include: '/Users/jgallaso/projects/3scale/porta/app/javascript/src/Stats', use: [ { loader: '/Users/jgallaso/projects/3scale/porta/node_modules/esbuild-loader/dist/index.cjs', options: { loader: 'jsx', target: 'es2016' } } ] }, { test: /\.(ts|tsx)$/, include: '/Users/jgallaso/projects/3scale/porta/app/javascript', use: 'ts-loader' }, { test: /\.ya?ml$/, include: '/Users/jgallaso/projects/3scale/porta/app/javascript/src/QuickStarts/templates', type: 'json', use: [ { loader: 'yaml-loader', options: { asJSON: true } } ] } ] }, output: { filename: 'js/[name]-[contenthash].js', chunkFilename: 'js/[name]-[contenthash].chunk.js', hotUpdateChunkFilename: 'js/[id]-[hash].hot-update.js', path: '/Users/jgallaso/projects/3scale/porta/public/packs', publicPath: '/packs/' }, plugins: [ WebpackAssetsManifest { hooks: { apply: Hook { _args: [ 'manifest' ], name: undefined, taps: [], interceptors: [], _call: [Function: CALL_DELEGATE], call: [Function: CALL_DELEGATE], _callAsync: [Function: CALL_ASYNC_DELEGATE], callAsync: [Function: CALL_ASYNC_DELEGATE], _promise: [Function: PROMISE_DELEGATE], promise: [Function: PROMISE_DELEGATE], _x: undefined, compile: [Function: COMPILE], tap: [Function: tap], tapAsync: [Function: TAP_ASYNC], tapPromise: [Function: TAP_PROMISE], constructor: [Function: SyncHook] }, customize: Hook { _args: [ 'entry', 'original', 'manifest', 'asset' ], name: undefined, taps: [], interceptors: [], _call: [Function: CALL_DELEGATE], call: [Function: CALL_DELEGATE], _callAsync: [Function: CALL_ASYNC_DELEGATE], callAsync: [Function: CALL_ASYNC_DELEGATE], _promise: [Function: PROMISE_DELEGATE], promise: [Function: PROMISE_DELEGATE], _x: undefined, compile: [Function: COMPILE], tap: [Function: tap], tapAsync: [Function: TAP_ASYNC], tapPromise: [Function: TAP_PROMISE], constructor: [Function: SyncWaterfallHook] }, transform: Hook { _args: [ 'assets', 'manifest' ], name: undefined, taps: [ { type: 'sync', fn: [Function (anonymous)], name: 'WebpackAssetsManifest' } ], interceptors: [], _call: [Function: CALL_DELEGATE], call: [Function: CALL_DELEGATE], _callAsync: [Function: CALL_ASYNC_DELEGATE], callAsync: [Function: CALL_ASYNC_DELEGATE], _promise: [Function: PROMISE_DELEGATE], promise: [Function: PROMISE_DELEGATE], _x: undefined, compile: [Function: COMPILE], tap: [Function: tap], tapAsync: [Function: TAP_ASYNC], tapPromise: [Function: TAP_PROMISE], constructor: [Function: SyncWaterfallHook] }, done: Hook { _args: [ 'manifest', 'stats' ], name: undefined, taps: [], interceptors: [], _call: undefined, call: undefined, _callAsync: [Function: CALL_ASYNC_DELEGATE], callAsync: [Function: CALL_ASYNC_DELEGATE], _promise: [Function: PROMISE_DELEGATE], promise: [Function: PROMISE_DELEGATE], _x: undefined, compile: [Function: COMPILE], tap: [Function: tap], tapAsync: [Function: tapAsync], tapPromise: [Function: tapPromise], constructor: [Function: AsyncSeriesHook] }, options: Hook { _args: [ 'options' ], name: undefined, taps: [], interceptors: [], _call: [Function: CALL_DELEGATE], call: [Function: CALL_DELEGATE], _callAsync: [Function: CALL_ASYNC_DELEGATE], callAsync: [Function: CALL_ASYNC_DELEGATE], _promise: [Function: PROMISE_DELEGATE], promise: [Function: PROMISE_DELEGATE], _x: undefined, compile: [Function: COMPILE], tap: [Function: tap], tapAsync: [Function: TAP_ASYNC], tapPromise: [Function: TAP_PROMISE], constructor: [Function: SyncWaterfallHook] }, afterOptions: Hook { _args: [ 'options', 'manifest' ], name: undefined, taps: [ { type: 'sync', fn: [Function (anonymous)], name: 'WebpackAssetsManifest' } ], interceptors: [], _call: [Function: CALL_DELEGATE], call: [Function: CALL_DELEGATE], _callAsync: [Function: CALL_ASYNC_DELEGATE], callAsync: [Function: CALL_ASYNC_DELEGATE], _promise: [Function: PROMISE_DELEGATE], promise: [Function: PROMISE_DELEGATE], _x: undefined, compile: [Function: COMPILE], tap: [Function: tap], tapAsync: [Function: TAP_ASYNC], tapPromise: [Function: TAP_PROMISE], constructor: [Function: SyncHook] } }, options: { enabled: true, assets: [Object: null prototype] {}, output: 'manifest.json', replacer: null, space: 2, writeToDisk: true, fileExtRegex: /\.\w{2,4}\.(?:map|gz|br)$|\.\w+$/i, sortManifest: true, merge: false, publicPath: true, contextRelativeKeys: true, apply: null, customize: null, transform: null, done: null, entrypoints: true, entrypointsKey: 'entrypoints', entrypointsUseAssets: true, integrity: false, integrityHashes: [ 'sha256', 'sha384', 'sha512' ], integrityPropertyName: 'integrity', extra: [Object: null prototype] {} }, assets: [Object: null prototype] {}, assetNames: Map(0) {}, currentAsset: null, compiler: null, [Symbol(isMerging)]: false }, WebpackRemoveEmptyScriptsPlugin { outputPath: '', trash: [], apply: [Function: bound apply], options: { enabled: true, verbose: false, extensions: /.(css|scss|sass|less|styl)([?].*)?$/, ignore: [], remove: /\.(js|mjs)$/, stage: 100 }, enabled: true, verbose: false }, MiniCssExtractPlugin { _sortedModulesCache: WeakMap { <items unknown> }, options: { filename: 'css/[name]-[contenthash:8].css', ignoreOrder: false, experimentalUseImportModule: undefined, runtime: true, chunkFilename: 'css/[id]-[contenthash:8].css' }, runtimeOptions: { insert: undefined, linkType: 'text/css', attributes: undefined } }, CompressionPlugin { options: { test: /\.(js|css|html|json|ico|svg|eot|otf|ttf|map)$/, include: undefined, exclude: undefined, algorithm: 'gzip', compressionOptions: { level: 9 }, filename: '[path][base].gz[query]', threshold: 0, minRatio: 0.8, deleteOriginalAssets: false }, algorithm: [Function: asyncBufferWrapper] } ], devtool: 'source-map', stats: 'normal', bail: true }
macOS Sonoma
The text was updated successfully, but these errors were encountered:
@josemigallas Have you tried the customize hook?
Sorry, something went wrong.
No branches or pull requests
The problem
I recently moved from
webpacker
and now need to generate the manifest manually. With the following assets:I would expect them to be under the same key
login
, however the manifest looks like:Is this something that must be customized? Or maybe it's
typescript-loader
I need to change?Technical details
Webpack version
Webpack config
Operating system
macOS Sonoma
The text was updated successfully, but these errors were encountered: