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
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -451,6 +451,13 @@ Type: `Function(FileDescriptor): Boolean`

Filter out files. [FileDescriptor typings](#filedescriptor)

### `options.test`

Type: `Function(Object, FileDescriptor): Object`<br>
Default: `src`

Test resource path to see if plugin should apply transformations


### `options.map`

Expand Down
35 changes: 18 additions & 17 deletions src/webpack/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -60,28 +60,25 @@ function hasExternalizedModule(module) {
return false;
}

const interleaveConfig = {
const interleaveConfig = test => ({
test(module) {
if (module.resource) {
return module.resource.includes('src') && !!hasExternalizedModule(module);
return module.resource.includes(test) && !!hasExternalizedModule(module);
}
},
name(module, chunks, cacheGroupKey) {
// dont chunk unless we are sure you can
// dont chunk unless we are sure you can

const moduleSource = hasExternalizedModule(module);
if (moduleSource) {
// module.originalSource().source((dependencyTemplates, runtimeTemplate, type = "javascript") =>{
// return NormalModule
// return
// })
return moduleSource.match(/\/\*\s*externalize\s*:\s*(\S+)\s*\*\//)[1];
}
// returning a chunk name causes problems with mini-css popping chunks off
// return 'main';
// returning a chunk name causes problems with mini-css popping chunks off
// return 'main';
},
enforce: true,
};
reuseExistingChunk: false,
});

function performInterleave() {

Expand All @@ -101,6 +98,7 @@ class URLImportPlugin {
this.opts = Object.assign({
publicPath: null,
debug: debug || false,
testPath: 'src',
basePath: '',
manifestName: 'unknown-project',
fileName: 'importManifest.js',
Expand Down Expand Up @@ -140,11 +138,11 @@ class URLImportPlugin {
}
const options = compiler?.options;
const chunkSplitting = options?.optimization?.splitChunks?.cacheGroups || {};
chunkSplitting.interleave = interleaveConfig;
chunkSplitting.interleave = interleaveConfig(this.opts.test);

if (this.opts.debug) {
console.groupCollapsed('interleaveConfig');
console.log(interleaveConfig);
console.log(chunkSplitting.interleave);
console.groupEnd();
console.groupCollapsed('New webpack optimization config');
}
Expand All @@ -154,14 +152,18 @@ class URLImportPlugin {
runtimeChunk: 'multiple',
namedModules: true,
splitChunks: {
chunks: options?.optimization?.splitChunks?.chunks || 'all',
chunks: 'all',
cacheGroups: chunkSplitting,
},
},
});

Object.assign(options.optimization.splitChunks, {
chunks: 'all',
cacheGroups: chunkSplitting,
namedModules: true,
});
if (this.opts.debug) {
console.log(options.optimization);
console.log(options);
console.groupEnd();
}

Expand Down Expand Up @@ -222,7 +224,6 @@ class URLImportPlugin {
let files = compilation.chunks.reduce((files, chunk) => chunk.files.reduce((files, path) => {
let name = chunk.name ? chunk.name : null;
const dependencyChains = {};

if (name) {
name = `${name}.${this.getFileType(path)}`;
} else {
Expand Down Expand Up @@ -434,7 +435,7 @@ class URLImportPlugin {
const isLastEmit = emitCount === 0;
if (isLastEmit) {
const cleanedManifest = Object.entries(manifest)
.reduce((acc, [key, asset]) => {console.log(asset);
.reduce((acc, [key, asset]) => {
if (!asset?.path?.includes('.map')) {
return Object.assign(acc, { [key]: asset });
}
Expand Down