TypeScript 编译速度极慢 > 12 秒

2024-05-20

只是把它放在那里看看其他人是否也遇到这个问题......

我已经使用 webpack 作为我的构建工具,使用 typescript 构建了一个 Angular 2 应用程序,一切都运行良好,但是我注意到 typescript 编译超级超级慢,我现在只有 12 秒......,而且很明显,这是这一切都是由于打字稿编译过程......

我使用 ts-loader 或 Awesome-typescript-loader 得到了类似的结果,如果我注释掉这个加载器,我的构建时间会下降到大约 1 秒......

经过一些研究,编译打字稿时“慢”时间似乎是“正常”的,但是 12 秒是正常的吗?

旧帖子暗示这可能是由于节点版本冲突,我当前运行的是 v4.4.2...

下面是我的 webpack 代码,以防有人发现那里有问题。Uglify 部分中的注释代码是由于 Angular 2 一侧的一些“错误”造成的...

const path = require('path');
const merge = require('webpack-merge');
const webpack = require('webpack');

const NpmInstallPlugin = require('npm-install-webpack-plugin');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const TARGET = process.env.npm_lifecycle_event;

const PATHS = {
  app: path.join(__dirname, 'app'),
  dist: path.join(__dirname, 'dist')
};

const common = {
  entry: {
    vendor: ['./app/vendor.ts'],
    main: ['./app/boot.component.ts']
  },
  output: {
    filename: '[name].[hash].bundle.js',
    path: PATHS.dist
  },
  resolve: {
    extensions: ['', '.js', '.ts']
  },
  plugins: [
    new HtmlWebpackPlugin({
      title: 'Qarrot Performance',
      template: 'index.template.ejs',
      commonStyles: [
        '/public/styles/vendor/normalize.css',
        '/public/styles/main.css'
      ],
      commonScripts: [],
      baseHref: '/',
      unsupportedBrowser: true,
      mobile: true,
      appMountId: 'app'
    }),
  ],
  module: {
    loaders: [
      {
        test: /\.ts$/,
        exclude: /node_modules/,
        loaders: ['ts-loader']
      },
      {
        test: /\.scss$/,
        loader: 'raw-loader!sass-loader'
      },
      {
        test: /\.html$/,
        loader: "html"
      }
    ]
  }
}

// Dev Settings
if(TARGET === 'start' || !TARGET) {
  module.exports = merge(common, {
    devtool: 'eval-source-map',
    devServer: {
      contentBase: PATHS.build,
      historyApiFallback: true,
      hot: true,
      inline: true,
      progress: true,
      stats: 'errors-only',
    },
    plugins: [
      new webpack.HotModuleReplacementPlugin(),
      new NpmInstallPlugin({
        save: true
      })
    ]
  });
}

// Prod Settings
if(TARGET === 'build') {
  module.exports = merge(common, {
    devtool: 'cheap-module-source-map',
    plugins: [
      // new webpack.optimize.UglifyJsPlugin({
      //   beautify: false,
      //   mangle: false,
      //   compress : { screw_ie8 : true },
      //   comments: false
      // }),
      new webpack.optimize.DedupePlugin(),
      new webpack.DefinePlugin({
        'process.env.NODE_ENV': '"production"'
      }),
      new CopyWebpackPlugin([
            { from: 'public', to: 'public' }
      ]),
      new webpack.optimize.CommonsChunkPlugin({
        names: ['vendor', 'manifest']
      }),
    ]
  });
}

我也在 Mac 上,运行 Angular 2 beta.15 和 webpack 版本 1.12,下面是我的 tsconfig.json

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "moduleResolution": "node",
    "sourceMap": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false
  },
  "compileOnSave": false,
  "exclude": [
    "node_modules",
    "typings/main",
    "typings/main.d.ts"
  ]
}

我会坚持awesome-typescript-loader。它有一些您可以启用的性能选项:缓存选项和仅转译选项:

"awesomeTypescriptLoaderOptions": {
  "useCache": true,
  "transpileOnly": true
}

这两者在编译时间上都有显着的改进。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TypeScript 编译速度极慢 > 12 秒 的相关文章

随机推荐

  • PostgreSQL函数中sql语言和plpgsql语言的区别

    我很新数据库开发所以我对下面的例子有一些疑问 函数 f1 语言 SQL create or replace function f1 istr varchar returns text as select hello varchar istr
  • GridView 中多次调用 getView()

    我的 Activity 由包含 40 多个元素的 GridView 组成 开始活动后 用户最多可以看到 15 个项目 3 行 每行 5 个项目 我在 getView 正文中编写传递给获取 View 的 LogCat 编号 Log i get
  • Relay 中的联合类型支持

    当您将字段定义为两种类型的联合时 示例机器包含 Ships 和 Droid 那么在 Relay 中您可以执行类似的操作 fragment on Faction relay plural true name machines on Ship
  • 为什么卡夫卡这么快[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如果我有相同的硬件 请使用 Kafka 或我们当前的解决方案 ServiceMix Camel 有什么区别吗 Kafka 能处理比它
  • 获取字符串中的最后一个整数

    我需要隔离包含多个整数的字符串中最新出现的整数 我怎样才能得到23代替1 for lastnum1 text 1 out of 23 lastnum1 this gt getEval eregi replace out of text 你可
  • 无法使用 Xamarin 和 WCF 访问 Web 服务

    我想使用 Xamarin 和 WCF 来使用公共 Web 服务 对于这个演示 我将使用Xamarin iOS 这是我试图使用的 公共 网络服务 http www webservicex net globalweather asmx WSDL
  • 为什么我的 tableView 函数运行了 3 次?

    我有一个 UITableView 并且有执行它所需的方法之一 func tableView tableView UITableView numberOfRowsInSection section Int gt Int println sec
  • 围绕 readline 构建的 python 批处理的触发器选项卡完成

    背景 我有一个 python 程序 它导入并使用 readline 模块来构建自制的命令行界面 我有第二个 python 程序 围绕 Bottle 一个 Web 微框架构建 充当该 CLI 的前端 第二个 python 程序向第一个程序打开
  • 为什么 Opencv Findcontour 在 Emgu c# 中表现不同?

    你好 opencv c 方法Findcontours返回数组层次结构并获取孔的边界 我可以获取层次结构 我怎样才能在 emgu 简历中得到这些边界请帮忙 我怎样才能找到 emgu 简历中的漏洞 您可以使用以下代码获取 Emgucv 中的轮廓
  • 使用远程管理凭据将文件复制到远程计算机

    我正在使用 C 我需要能够将一组文件复制到大约 500 台不同的计算机上 我已成功地使用 LogonUser 方法来模拟具有复制文件所需权限的域帐户 文件的目标路径类似于 远程计算机 C SomeFolder 我的问题是 有没有办法做到这一
  • 从作用域 '' 引用了类型 '' 的变量 '',但未定义

    好吧 下面的代码是不言自明的 我想使用将两个表达式合并为一个And操作员 最后一行导致 rune time 错误 附加信息 从范围 引用了 System String 类型的变量 y 但未定义 Code Expression
  • Airflow 1.10.3 - 空白“最近任务”和“DAG 运行”

    我在 Ubuntu 18 10 上安装了 Airflow 1 10 3 并且能够添加 DAG 并运行它们 但 Web UI 中的 最近任务 和 DAG 运行 为空 我所看到的只是一个黑色虚线圆圈 它不断加载 但什么也没有实现 我最近将 Ai
  • 从数据框中按索引删除行

    我有一个数组wrong indexes train其中包含我想从数据框中删除的索引列表 0 63 151 469 1008 要删除这些索引 我正在尝试这样做 df train drop wrong indexes train 但是 代码失败
  • 如何重新加载 jquery dropkick 对象

    我使用一个简单的选择列表和 jquery dropkick 库来使其美观 现在我想在更改相应的选择元素后更改 dropkick 内容 出现了一个新选项 但只需调用 select dropkick 不起作用 而且好像不支持 只需从头开始重建那
  • scrapy LinkExtractors 最终会得到唯一的链接吗?

    所以 我有一个包含很多文章和页码的页面 现在 如果我想提取一篇文章 我会使用 Rule LinkExtractor allow article html callback parse article 对于页面我使用这个规则 规则 LinkE
  • 在 Swift 中自动移动 UISlider

    我想在按下按钮时将 UISlider 从 minValue 循环移动到 maxValue 并在再次按下按钮时将其停止在当前位置 我想使用 Swift 我遇到的主要问题是函数 slider setValue 太快了 我希望动画更慢 IBAct
  • 通过 URL 指定控制器类与为每个控制器编写一个脚本相比,有何优缺点?

    今年夏天我安装了两个不同的 PHP 系统 每个都使用两种不同的方法 方法 1 每个任务一个 PHP 文件 该方法需要一个PHP为每个主要任务创建文件 例如 我的上传脚本可以通过http www domain com upload php O
  • Typescript Map 在使用其函数时抛出错误(mapobject.keys() 不是函数)

    我是 typescript 中的新蜜蜂 在我的 angular4 项目中 我收到一个 json 形式的地图对象 所以我声明了一个如下所示的类
  • Spring安全“记住我”cookie在第一个请求中不可用

    我无法在登录请求后检索 Spring 记住我 cookie 但它在对受保护页面的下一个请求中工作正常 谁能告诉我怎样才能立即得到它 我在登录请求中设置了记住我的 cookie 但在 Spring 重定向回原始 受保护的 url 后无法检索它
  • TypeScript 编译速度极慢 > 12 秒

    只是把它放在那里看看其他人是否也遇到这个问题 我已经使用 webpack 作为我的构建工具 使用 typescript 构建了一个 Angular 2 应用程序 一切都运行良好 但是我注意到 typescript 编译超级超级慢 我现在只有