diff --git a/src/rollup/index.ts b/src/rollup/index.ts index 2960d43160f..746ba9f7517 100644 --- a/src/rollup/index.ts +++ b/src/rollup/index.ts @@ -272,6 +272,16 @@ export default async function rollup(rawInputOptions: GenericConfigObject): Prom throw error; } await graph.pluginDriver.hookSeq('generateBundle', [outputOptions, outputBundle, isWrite]); + for (const key of Object.keys(outputBundle)) { + const file = outputBundle[key] as any; + if (!file.type) { + graph.warnDeprecation( + 'A plugin is directly adding properties to the bundle object in the "generateBundle" hook. This is deprecated and will be removed in a future Rollup version, please use "this.emitAsset" instead.', + false + ); + file.type = 'asset'; + } + } graph.pluginDriver.finaliseAssets(); timeEnd('GENERATE', 1); diff --git a/test/form/samples/deprecated/emit-asset-hacky/_config.js b/test/form/samples/deprecated/emit-asset-hacky/_config.js new file mode 100644 index 00000000000..d40ed2b503a --- /dev/null +++ b/test/form/samples/deprecated/emit-asset-hacky/_config.js @@ -0,0 +1,16 @@ +module.exports = { + description: 'supports emitting assets in a hacky way by editing the bundle object', + options: { + strictDeprecations: false, + plugins: { + generateBundle(options, outputBundle) { + const file = { + fileName: 'my-hacky-asset.txt', + isAsset: true, + source: 'My Hacky Source' + }; + outputBundle[file.fileName] = file; + } + } + } +}; diff --git a/test/form/samples/deprecated/emit-asset-hacky/_expected/amd.js b/test/form/samples/deprecated/emit-asset-hacky/_expected/amd.js new file mode 100644 index 00000000000..126aa22ee83 --- /dev/null +++ b/test/form/samples/deprecated/emit-asset-hacky/_expected/amd.js @@ -0,0 +1,5 @@ +define(function () { 'use strict'; + + console.log('main'); + +}); diff --git a/test/form/samples/deprecated/emit-asset-hacky/_expected/cjs.js b/test/form/samples/deprecated/emit-asset-hacky/_expected/cjs.js new file mode 100644 index 00000000000..d0ed06d8c90 --- /dev/null +++ b/test/form/samples/deprecated/emit-asset-hacky/_expected/cjs.js @@ -0,0 +1,3 @@ +'use strict'; + +console.log('main'); diff --git a/test/form/samples/deprecated/emit-asset-hacky/_expected/es.js b/test/form/samples/deprecated/emit-asset-hacky/_expected/es.js new file mode 100644 index 00000000000..c0b933d7b56 --- /dev/null +++ b/test/form/samples/deprecated/emit-asset-hacky/_expected/es.js @@ -0,0 +1 @@ +console.log('main'); diff --git a/test/form/samples/deprecated/emit-asset-hacky/_expected/iife.js b/test/form/samples/deprecated/emit-asset-hacky/_expected/iife.js new file mode 100644 index 00000000000..d283cbce8ba --- /dev/null +++ b/test/form/samples/deprecated/emit-asset-hacky/_expected/iife.js @@ -0,0 +1,6 @@ +(function () { + 'use strict'; + + console.log('main'); + +}()); diff --git a/test/form/samples/deprecated/emit-asset-hacky/_expected/my-hacky-asset.txt b/test/form/samples/deprecated/emit-asset-hacky/_expected/my-hacky-asset.txt new file mode 100644 index 00000000000..61db1bb6537 --- /dev/null +++ b/test/form/samples/deprecated/emit-asset-hacky/_expected/my-hacky-asset.txt @@ -0,0 +1 @@ +My Hacky Source \ No newline at end of file diff --git a/test/form/samples/deprecated/emit-asset-hacky/_expected/system.js b/test/form/samples/deprecated/emit-asset-hacky/_expected/system.js new file mode 100644 index 00000000000..c83499bc2d4 --- /dev/null +++ b/test/form/samples/deprecated/emit-asset-hacky/_expected/system.js @@ -0,0 +1,10 @@ +System.register([], function () { + 'use strict'; + return { + execute: function () { + + console.log('main'); + + } + }; +}); diff --git a/test/form/samples/deprecated/emit-asset-hacky/_expected/umd.js b/test/form/samples/deprecated/emit-asset-hacky/_expected/umd.js new file mode 100644 index 00000000000..4768f1d9737 --- /dev/null +++ b/test/form/samples/deprecated/emit-asset-hacky/_expected/umd.js @@ -0,0 +1,8 @@ +(function (factory) { + typeof define === 'function' && define.amd ? define(factory) : + factory(); +}(function () { 'use strict'; + + console.log('main'); + +})); diff --git a/test/form/samples/deprecated/emit-asset-hacky/main.js b/test/form/samples/deprecated/emit-asset-hacky/main.js new file mode 100644 index 00000000000..c0b933d7b56 --- /dev/null +++ b/test/form/samples/deprecated/emit-asset-hacky/main.js @@ -0,0 +1 @@ +console.log('main');