zoukankan      html  css  js  c++  java
  • 使用Bazel编译TypeScript

    准备

    请事先安装Nodejs,Yarn 1.xBazel

    我使用的版本为:

    1. Nodejs: v14.17.3
    2. Yarn: 1.22.5
    3. Bzel: 4.1.0

    创建一个Typescript项目

    选择指定目录,创建一个名为ts-bazel(其他名字也可以)的文件夹,使用终端进入该文件夹,然后执行npm init,一路选择默认。

    安装Typescipt:

    yarn add typescipt -D
    

    创建Typescript配置文件

    npx tsc --init
    

    创建src文件夹,在该文件夹里新建index.ts文件,并写入一下内容:

    function sayHello(name: string) {
        console.log(`helle ${name}`);
    }
    
    sayHello('daming');
    

    配置Bazel

    安装bazel等相关依赖:

    yarn add @bazel/bazelisk @bazel/ibazel @bazel/typescript -D 
    

    在根目录里创建WORKSPACE, 并写入以下内容:

    workspace(
        name = "ts-bazel",
        managed_directories = {"@npm": ["node_modules"]},
    )
    
    load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
    
    http_archive(
        name = "build_bazel_rules_nodejs",
        sha256 = "275744d287af4c3a78d7c9891f2d970b7bc7eca8cfc0e9a671fe6258d09ff217",
        urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/4.0.0-rc.1/rules_nodejs-4.0.0-rc.1.tar.gz"],
    )
    
    load("@build_bazel_rules_nodejs//:index.bzl", "check_rules_nodejs_version", "node_repositories", "yarn_install")
    
    check_rules_nodejs_version(minimum_version_string = "2.2.0")
    
    # Setup the Node.js toolchain
    node_repositories(
        node_version = "14.17.3",
        package_json = ["//:package.json"],
    )
    
    yarn_install(
        name = "npm",
        package_json = "//:package.json",
        yarn_lock = "//:yarn.lock",
    )
    

    在根目录中创建BUILD.bazel文件,并写入以下内容:

    package(default_visibility = ["//visibility:public"])
    
    exports_files(["tsconfig.json"])
    

    src文件夹中创建BUILD.bazel文件,并写入以下内容:

    package(default_visibility = ["//visibility:public"])
    
    load("@npm//@bazel/typescript:index.bzl", "ts_project")
    
    
    ts_project(
      name = "index",
      srcs = ["index.ts"],
      tsconfig = "//:tsconfig.json",
      visibility = ["//visibility:public"],
    )
    

    编译

    现在可以使用bazel编译项目了!

    bazel build //src:index
    

    检查一下结果

    node  bazel-bin/src/index.js
    

    输出结果为:

    helle daming
    
  • 相关阅读:
    vue禁止用户复制文案
    html2canvas.js + jspdf.js 实现html转pdf / html转图片
    Vue.js +pdf.js 处理响应pdf文件流数据,前端转图片预览不可下载
    JavaScript处理后端返回PDF文件流,在线预览下载PDF文件
    多线程并发工具类01-CountDownLatch 线程工具类
    线程池01-线程池基础知识
    网络基础知识01-协议分层与TCP/IP协议簇
    网络基础知识02-HTTP协议
    jquery-i18n 多语言切换
    springboot-01 springboot 启动 enviroment环境加载
  • 原文地址:https://www.cnblogs.com/xiao2/p/15171885.html
Copyright © 2011-2022 走看看