123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- /*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
- import * as webpack from "webpack";
- import * as path from "path";
- import * as HtmlWebpackPlugin from "html-webpack-plugin";
- import { CleanWebpackPlugin } from "clean-webpack-plugin";
- const MiniCssExtractPlugin = require("mini-css-extract-plugin");
- import * as CopyPlugin from "copy-webpack-plugin";
- const r = (file: string) => path.resolve(__dirname, file);
- module.exports = {
- entry: {
- index: r("src/website/index.tsx"),
- playgroundRunner: r("src/runner/index.ts"),
- monacoLoader: r("src/website/monaco-loader-chunk.ts"),
- },
- optimization: {
- runtimeChunk: "single",
- },
- output: {
- path: r("dist"),
- devtoolModuleFilenameTemplate: "file:///[absolute-resource-path]",
- },
- resolve: {
- extensions: [".webpack.js", ".web.js", ".ts", ".tsx", ".js"],
- },
- devtool: "source-map",
- devServer: {
- headers: {
- "Access-Control-Allow-Origin": "*",
- "Access-Control-Allow-Methods":
- "GET, POST, PUT, DELETE, PATCH, OPTIONS",
- "Access-Control-Allow-Headers":
- "X-Requested-With, content-type, Authorization",
- },
- allowedHosts: "all",
- watchFiles: [],
- },
- module: {
- rules: [
- {
- test: /\.css$/,
- use: [
- /*"style-loader"*/ MiniCssExtractPlugin.loader,
- "css-loader",
- ],
- },
- {
- test: /\.scss$/,
- use: [
- /*"style-loader",*/ MiniCssExtractPlugin.loader,
- "css-loader",
- "sass-loader",
- ],
- },
- {
- test: /\.(jpe?g|png|gif|eot|ttf|svg|woff|woff2|md)$/i,
- loader: "file-loader",
- },
- {
- test: /\.tsx?$/,
- loader: "ts-loader",
- options: { transpileOnly: true },
- },
- { test: /\.txt$/i, use: "raw-loader" },
- ],
- },
- plugins: [
- new webpack.DefinePlugin({
- "process.env": {
- YEAR: JSON.stringify(new Date().getFullYear()),
- },
- }),
- new CleanWebpackPlugin(),
- new MiniCssExtractPlugin({
- filename: "[name].css",
- chunkFilename: "[id].css",
- }),
- new HtmlWebpackPlugin({
- chunks: ["monacoLoader", "index"],
- templateContent: getHtml(),
- chunksSortMode: "manual",
- }),
- new HtmlWebpackPlugin({
- chunks: ["index"],
- filename: "playground.html",
- templateContent: getHtml(),
- }),
- new HtmlWebpackPlugin({
- chunks: ["playgroundRunner"],
- filename: "playgroundRunner.html",
- templateContent: getHtml(),
- }),
- new HtmlWebpackPlugin({
- chunks: ["index"],
- filename: "docs.html",
- templateContent: getHtml(),
- }),
- new HtmlWebpackPlugin({
- chunks: ["index"],
- filename: "monarch.html",
- templateContent: getHtml(),
- }),
- new CopyPlugin({
- patterns: [{ from: "./static", to: "./" }],
- }),
- new CopyPlugin({
- patterns: [{ from: "./typedoc/dist", to: "./typedoc/" }],
- }),
- new CopyPlugin({
- patterns: [
- {
- from: "./node_modules/monaco-editor/",
- to: "./node_modules/monaco-editor/",
- // This disables minification for js files
- info: { minimized: true },
- },
- ],
- }),
- new CopyPlugin({
- patterns: [
- {
- from: "../node_modules/monaco-editor-core/",
- to: "./node_modules/monaco-editor-core/",
- // This disables minification for js files
- info: { minimized: true },
- },
- ],
- }),
- new CopyPlugin({
- patterns: [{ from: "../out/languages/", to: "./out/languages/" }],
- }),
- ],
- } as webpack.Configuration;
- function getHtml(): string {
- return `
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>Monaco Editor</title>
- </head>
- <body>
- </body>
- </html>`;
- }
|