mirror of https://github.com/webpack/webpack.git
				
				
				
			
		
			
				
	
	
		
			117 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			117 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| // There are different ways to use files:
 | |
| 
 | |
| // 1. Using `import something from "./file.ext";`
 | |
| 
 | |
| // return URLs or Data URL, depends on your configuration
 | |
| import png from "./images/file.png";
 | |
| import jpg from "./images/file.jpg";
 | |
| import svg from "./images/file.svg";
 | |
| 
 | |
| // 2. Using `import something from "./file.ext"; with { type: "text" }` or `import something from "./file.ext"; with { type: "bytes" }`
 | |
| // You don't need extra options in your configuration for these imports, they work out of the box
 | |
| 
 | |
| // returns the content as text
 | |
| import text from "./content/file.text" with { type: "text" };
 | |
| 
 | |
| // returns the content as `Uint8Array`
 | |
| import bytes from "./content/bytes.svg" with { type: "bytes" };
 | |
| 
 | |
| // 3. Using `new URL("./file.ext", import.meta.url);`
 | |
| // You don't need extra options in your configuration for `new URL(...)` construction, they work out of the box
 | |
| const url = new URL("./images/url.svg", import.meta.url);
 | |
| 
 | |
| const container = document.createElement("div");
 | |
| 
 | |
| Object.assign(container.style, {
 | |
| 	display: "flex",
 | |
| 	flexWrap: "wrap",
 | |
| 	justifyContent: "center"
 | |
| });
 | |
| document.body.appendChild(container);
 | |
| 
 | |
| function createImageElement(div, data) {
 | |
| 	const img = document.createElement("img");
 | |
| 	img.setAttribute("src", data);
 | |
| 	img.setAttribute("width", "150");
 | |
| 	div.appendChild(img);
 | |
| 
 | |
| 	container.appendChild(div);
 | |
| }
 | |
| 
 | |
| function createTextElement(div, data) {
 | |
| 	const context = document.createElement("div");
 | |
| 	context.textContent = data;
 | |
| 	div.appendChild(context);
 | |
| 
 | |
| 	container.appendChild(div);
 | |
| }
 | |
| 
 | |
| function createBlobElement(div, data) {
 | |
| 	const blob = new Blob([data], { type: 'image/svg+xml' });
 | |
| 	const blobUrl = URL.createObjectURL(blob);
 | |
| 
 | |
| 	const img = document.createElement("img");
 | |
| 
 | |
| 	img.setAttribute("src", blobUrl);
 | |
| 	img.setAttribute("width", "150");
 | |
| 	div.appendChild(img);
 | |
| 
 | |
| 	container.appendChild(div);
 | |
| 
 | |
| 	img.addEventListener(
 | |
| 		'load',
 | |
| 		() => { URL.revokeObjectURL(blobUrl) },
 | |
| 		{ once: true }
 | |
| 	);
 | |
| }
 | |
| 
 | |
| const files = [
 | |
| 	{
 | |
| 		title: "import png from \"./images/file.png\";",
 | |
| 		data: png,
 | |
| 		render: createImageElement,
 | |
| 	},
 | |
| 	{
 | |
| 		title: "import jpg from \"./images/file.jpg\";",
 | |
| 		data: jpg,
 | |
| 		render: createImageElement,
 | |
| 	},
 | |
| 	{
 | |
| 		title: "import svg from \"./images/file.svg\";",
 | |
| 		data: svg,
 | |
| 		render: createImageElement,
 | |
| 	},
 | |
| 	{
 | |
| 		title: "import text from \"./content/file.text\" with { type: \"text\" };",
 | |
| 		data: text,
 | |
| 		render: createTextElement,
 | |
| 	},
 | |
| 	{
 | |
| 		title: "import bytes from \"./content/file.text\" with { type: \"bytes\" };",
 | |
| 		data: bytes,
 | |
| 		render: createBlobElement,
 | |
| 	},
 | |
| 	{
 | |
| 		title: "new URL(\"./url.svg\", import.meta.url);",
 | |
| 		data: url,
 | |
| 		render: createImageElement,
 | |
| 	},
 | |
| ];
 | |
| 
 | |
| 
 | |
| function render(title, data, fn) {
 | |
| 	const div = document.createElement("div");
 | |
| 	div.style.textAlign = "center";
 | |
| 	div.style.width = "50%";
 | |
| 
 | |
| 	const h2 = document.createElement("h2");
 | |
| 	h2.textContent = title;
 | |
| 	div.appendChild(h2);
 | |
| 
 | |
| 	fn(div, data)
 | |
| }
 | |
| 
 | |
| files.forEach(item => {
 | |
| 	render(item.title, item.data, item.render);
 | |
| });
 |