webpack 集成 Typescript && Less

webpack 集成 Typescript && Less

TypeScriptJavaScript的一个类型化的超集,可以编译成纯JavaScript,在本指南中,我们将学习如何将Typescriptwebpack集成。

基本设置

为了开始使用webpackTypescript,首先我们必须在我们的项目中安装webpack。 如果您没有这样做,请查看webpack安装指南

要开始使用包含Typescriptwebpack,您需要几件事情:

  • 在您的项目中安装Typescript编译器。
  • 安装一个Typescript加载器(在这种情况下,我们使用的是ts-loader)。
  • 创建一个tsconfig.json文件以包含我们的TypeScript编译配置。
  • 创建webpack.config.js以包含我们的webpack配置。
  • 您可以通过运行以下方法从npm安装TypeScript编译器TypeScript加载器
npm install --save-dev typescript ts-loader

tsconfig.json
tsconfig文件可以作为一个空配置文件启动,在这里可以看到一个基本配置示例,用于将TypeScript编译为es5,并为JSX提供支持。

{
  "compilerOptions": {
    "outDir": "./dist/",
    "sourceMap": true,
    "noImplicitAny": true,
    "module": "commonjs",
    "target": "es5",
    "jsx": "react",
    "allowJs": true
  }
}

您可以在TypeScript文档网站上阅读有关tsconfig.json配置选项的更多信息

webpack.config.js

具有TypeScript配置的基本Webpack应该沿用这些代码:

const path = require("path");const HtmlWebpackPlugin = require(‘html-webpack-plugin‘);module.exports = {    entry: {        app: ‘./src/index.ts‘    },    output: {        path: path.resolve(__dirname, "./dist"),        filename: ‘bundle/[name].bundle.js‘    },    mode:"development",    devtool: ‘inline-source-map‘,    resolve: {        extensions: [‘.tsx‘, ‘.ts‘, ‘.js‘]    },    module: {        rules: [            {                test: /\.tsx?$/,                use: [                    {                        loader: "ts-loader"                    }                ]            },            {                test: /\.less$/,                use: [                    {                        loader: ‘style-loader‘                    },                    {                        loader: ‘css-loader‘                    },                    {                        loader: ‘less-loader‘                    }                ]            }        ]    },    plugins: [        new HtmlWebpackPlugin({            title: ‘Output Management‘        })    ]};

这里我们将我们的入口点指定为我们当前目录中的index.ts,一个名为bundle.js的输出文件和我们的TypeScript加载器,负责将我们的TypeScript文件编译为JavaScript。 我们还添加resolve.extensions来指示webpack在解析Typescript模块时使用什么文件扩展名。

Typescript loaders

目前有两种可用于TypeScript的loaders:

  • awesome-typescript-loader
  • ts-loader

令人敬畏的TypeScript加载程序创建了一个awesome-typescript-loaderts-loader之间的区别精彩的解释。

您可以在这里阅读更多。 在本指南中,我们将使用ts-loader,因为更容易实现其他Webpack功能,例如将非代码资源导入到项目中。

启用源映射

为了启用源映射,我们首先必须配置TypeScript以将内联源映射输出到我们编译的JavaScript文件中。这通过将sourceMap属性设置为true来完成.

tsconfig.json

{
  "sourceMap": true
}

一旦将TypeScript配置为输出源映射,我们需要告诉webpack提取这些源映射并将其传递给浏览器,这样我们就可以在我们的代码编辑器中看到源文件

webpack.config.js

module.exports = {
 entry: ‘./index.ts‘,
 output: {
   filename: ‘bundle.js‘,
   path: __dirname
 },
 module: {
   rules: [
     {
       enforce: ‘pre‘,
       test: /\.js$/,
       loader: "source-map-loader"
     },
     {
       enforce: ‘pre‘,
       test: /\.tsx?$/,
       use: "source-map-loader"
     }
   ]
 },
 resolve: {
   extensions: [".tsx", ".ts", ".js"]
 },
 devtool: ‘inline-source-map‘,
};

首先我们添加一个名为source-map-loader的新加载器。

要安装它运行:

npm install --save-dev source-map-loader

一旦加载程序安装,我们需要告诉webpack我们要在任何其他加载程序之前使用enforce:‘pre‘配置标志来运行这个加载程序。 最后,我们需要通过指定devtool属性来启用webpack中的源映射。 目前我们使用‘inline-source-map‘设置来阅读有关此设置的更多信息,并查看其他选项,以查看devtool文档

使用第三方库

从npm安装第三方库时,请务必记住安装该库的typing定义。

您可以从@types存储库,安装第三方库定义。

例如,如果我们要安装lodash,我们可以运行以下命令来获取它的输入:

npm install --save-dev @types/lodash

有关更多信息,请参阅此博文

导入非代码部分资源

要使用TypeScript的非代码资源,我们需要告诉TypeScript如何推迟这些导入的类型。

为此,我们需要创建一个custom.d.ts文件。 此文件表示我们项目中TypeScript的自定义定义。

在我们的custom.d.ts文件中,我们需要为svg导入提供一个定义,为此,我们需要将以下内容放在此文件中:

declare module "*.svg" {
  const content: any;
  export default content;
}

在这里,我们通过指定任何以.svg结尾的导入,为svg声明一个新模块,并将该模块的类型定义为any。 如果我们想要更明确地说这是一个url,我们可以将类型定义为字符串

这不仅适用于svg,而且还适用于您可能希望使用的任何自定义加载器,包括css,scss,json或您可能希望在项目中加载的任何其他文件。

原文地址:https://www.cnblogs.com/hsl-shiliang/p/8728669.html

时间: 2024-10-27 04:45:40

webpack 集成 Typescript && Less的相关文章

vuejs electron webpack集成使用

传统的vue SPA页面在浏览器环境中使用,但是有的时候我们还希望能够做成一个类似于桌面的app在PC上使用,希望不仅可以使用所有的浏览器SPA的功能,你也可能外加host os的功能,比如文件的本地保存,离线使用等.这时,electron就是一个很好的备选方案.electron本身集成了一个chrome核心的浏览器以及nodejs server模块,既可以使用已有的web技术栈,又能借助electron的跨平台能力,从而实现cross-platform的原生app. https://githu

webpack集成vue单文件模式的很多坑(研究了1个星期)

1.一开始不知道局部安装webpack后,如何调用webpack. 后来看说明文档(webpack中文网)才知道,有个npx可以启动本地安装的webpack. 我估计:全局安装webpack,全局的webpack无法调用我的本地安装的很多包,以至于总是编译失败. 因此卸载全局包:npm uninstall -g webpack    ; npm uninstall -g webpack-cli npm安装模块 [npm install xxx]利用 npm 安装xxx模块到当前命令行所在目录:

webpack+typescript入门实例

使用npm 安装相应的模块 webpack 4 需要安装 webpack.webpack-cli 和 typescript 等必要的模块.为了使用 webpack 处理 typescript,还需要 ts-loader.在VSCode的终端输入以下命令 1.初始化项目: npm init 回答一系列的问题(也可以直接回车使用默认值)后,在当前项目文件夹中会出现一个package.json的配置文件.文件内容大概如下所示: { "name": "webpacktypescrip

webpack学习笔记一(入门)

webpack集成了模块加载和打包等功能 ,这两年在前端圈越来越手欢迎.平时一般是用requirejs.seajs作为模块加载用,用grunt/gulp作为前端构建.webpack作为模块化加载兼容了amd/cmd模式,并且作为模块化的资源可以是js/css/image  coffeescript/sass/less  ES2015 modles TypeScript 等功能非常强大,作为前端构建工具还可以和grunt/gulp配合一起使用. 配置文件webpack.config.js也是非常清

细说前端自动化打包工具--webpack

背景 记得2004年的时候,互联网开发就是做网页,那时也没有前端和后端的区分,有时一个网站就是一些纯静态的html,通过链接组织在一起.做网页就和用world编辑一个文档一样,只不过那个工具叫Dreamweaver.一个html页面,夹杂着css,javascript是再常见不过的事了. 随着前端的不断发展,特别是单页应用的兴起,这种所见即所得的IDE工具,就渐渐地退出了前端的主流.一个应用,通常只有一个静态页面(index.html),甚至这个页面的body只有一个或少数几个div组成.这时有

gulp与webpack-stream集成配置

webpack非常强大,但是也有不足的地方,批量式处理依然是gulp更胜一筹.我们是否可以将两者的优点结合起来呢? 这篇文章就是讲述如何集成gulp和webpack 1.安装webpack-stream 很重要的插件,当然也可以直接使用官方的webpack,集成方式可以看webpack官网. 但webpack-stream更符合gulp的流语法. sudo npm install --save webpack-stream vinyl-named windows用户去掉sudo, vinyl-n

TypeScript初识

TypeScript 是 JavaScript 的超集,为 JavaScript 的生态增加了类型机制,并最终将代码编译为纯粹的 JavaScript 代码.类型机制很重要吗?最近的一些项目经历让我觉得这真的很重要.当你陷在一个中大型项目中时(Web 应用日趋成为常态),没有类型约束.类型推断,总有种牵一发而动全身的危机和束缚.Immutable.js 和 Angular 2 都在使用 TypeScript 做开发,它们都是体量颇大的项目,所以我决定尝试一下 Typescript.此外我们还可以

webpack的使用(1)

1.将js文件转换 webpack  app/main.js  public/webpack.js  //将app文件家里的main.js 转换成public文件夹下的webpack.js ps:webpack集成了require.js

Go 语言集成开发环境 GoLand 更新至 2018.1.3 版本

GoLand 2018.1.3 已发布,这是一个全新的更新,尽管没有带来明显的针对 Go 语言的特定改进,但还是提供了许多与 UI,JavaScript 和 SQL 支持相关的错误修复和改进. 可通过 Toolbox App 进行更新,或通过官网下载 >>> https://www.jetbrains.com/go/download/ 值得关注的更新 支持 .sqlite/.sqlite3 文件 Vue 文件中的流支持 改进对 Angular 6 的支持以及与 Angular CLI 6