mirror of
https://github.com/scratchfoundation/scratch-webpack-configuration.git
synced 2024-11-24 08:38:04 -05:00
feat: support arraybuffer-loader through ?arrayBuffer
resource query
This commit is contained in:
parent
31a9cd5352
commit
2a263ff6e5
3 changed files with 57 additions and 3 deletions
40
package-lock.json
generated
40
package-lock.json
generated
|
@ -25,6 +25,7 @@
|
|||
},
|
||||
"peerDependencies": {
|
||||
"@babel/preset-env": "^7.24.0",
|
||||
"arraybuffer-loader": "^1.0.8",
|
||||
"autoprefixer": "^9.0.1",
|
||||
"babel-loader": "^9.1.3",
|
||||
"css-loader": "5.2.7",
|
||||
|
@ -4635,6 +4636,44 @@
|
|||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/arraybuffer-loader": {
|
||||
"version": "1.0.8",
|
||||
"resolved": "https://registry.npmjs.org/arraybuffer-loader/-/arraybuffer-loader-1.0.8.tgz",
|
||||
"integrity": "sha512-CwUVCcxCgcgZUu2w741OV6Xj1tvRVQebq22RCyGXiLgJOJ4e4M/59EPYdtK2MLfIN28t1TDvuh2ojstNq3Kh5g==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"loader-utils": "^1.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 4.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/arraybuffer-loader/node_modules/json5": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
|
||||
"integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"minimist": "^1.2.0"
|
||||
},
|
||||
"bin": {
|
||||
"json5": "lib/cli.js"
|
||||
}
|
||||
},
|
||||
"node_modules/arraybuffer-loader/node_modules/loader-utils": {
|
||||
"version": "1.4.2",
|
||||
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz",
|
||||
"integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"big.js": "^5.2.2",
|
||||
"emojis-list": "^3.0.0",
|
||||
"json5": "^1.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=4.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/arrify": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
|
||||
|
@ -10495,7 +10534,6 @@
|
|||
"version": "1.2.8",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
|
||||
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
|
|
|
@ -44,6 +44,7 @@
|
|||
},
|
||||
"peerDependencies": {
|
||||
"@babel/preset-env": "^7.24.0",
|
||||
"arraybuffer-loader": "^1.0.8",
|
||||
"autoprefixer": "^9.0.1",
|
||||
"babel-loader": "^9.1.3",
|
||||
"css-loader": "5.2.7",
|
||||
|
|
|
@ -5,6 +5,7 @@ const nodeExternals = require('webpack-node-externals');
|
|||
const webpack = require('webpack');
|
||||
|
||||
const DEFAULT_CHUNK_FILENAME = 'chunks/[name].[chunkhash].js';
|
||||
const DEFAULT_ASSET_FILENAME = 'assets/[name].[hash][ext][query]';
|
||||
|
||||
/**
|
||||
* @typedef {import('webpack').Configuration} Configuration
|
||||
|
@ -70,6 +71,7 @@ class ScratchWebpackConfigBuilder {
|
|||
output: {
|
||||
clean: true,
|
||||
filename: '[name].js',
|
||||
assetModuleFilename: DEFAULT_ASSET_FILENAME,
|
||||
chunkFilename: DEFAULT_CHUNK_FILENAME,
|
||||
path: this._distPath,
|
||||
library: {
|
||||
|
@ -116,18 +118,21 @@ class ScratchWebpackConfigBuilder {
|
|||
{
|
||||
// `asset` automatically chooses between exporting a data URI and emitting a separate file.
|
||||
// Previously achievable by using `url-loader` with asset size limit.
|
||||
resourceQuery: /^\?asset$/,
|
||||
// If file output is chosen, it is saved with the default asset module filename.
|
||||
resourceQuery: '?asset',
|
||||
type: 'asset'
|
||||
},
|
||||
{
|
||||
// `asset/resource` emits a separate file and exports the URL.
|
||||
// Previously achievable by using `file-loader`.
|
||||
// Output is saved with the default asset module filename.
|
||||
resourceQuery: /^\?(resource|file)$/,
|
||||
type: 'asset/resource'
|
||||
},
|
||||
{
|
||||
// `asset/inline` exports a data URI of the asset.
|
||||
// Previously achievable by using `url-loader`.
|
||||
// Because the file is inlined, there is no filename.
|
||||
resourceQuery: /^\?(inline|url)$/,
|
||||
type: 'asset/inline'
|
||||
},
|
||||
|
@ -135,7 +140,17 @@ class ScratchWebpackConfigBuilder {
|
|||
// `asset/source` exports the source code of the asset.
|
||||
// Previously achievable by using `raw-loader`.
|
||||
resourceQuery: /^\?(source|raw)$/,
|
||||
type: 'asset/source'
|
||||
type: 'asset/source',
|
||||
generator: {
|
||||
// This filename seems unused, but if it ever gets used,
|
||||
// its extension should not match the asset's extension.
|
||||
filename: DEFAULT_ASSET_FILENAME + '.js'
|
||||
}
|
||||
},
|
||||
{
|
||||
resourceQuery: '?arrayBuffer',
|
||||
type: 'javascript/auto',
|
||||
use: 'arraybuffer-loader'
|
||||
},
|
||||
{
|
||||
test: /\.hex$/,
|
||||
|
|
Loading…
Reference in a new issue