前段时间接触到 Microsoft 的 Microsoft.AspNetCore.SpaTemplates 模板,生成的项目使用的默认语言是 TypeScript,虽然以前在此之前并没有用过TypeScript,但第一看上去有种很熟悉的感觉。当然,也有人说 TypeScript 是 JavaScript 版本的C#,不管怎么说,有了学习的兴趣。另外,据说新版的webpack 4相比以前的版本的更快的打包速度,于是就有了把它们结合在一起使用的想法。

准备工作

请事先安装好 Node.js
新建项目文件夹,按住 Shift 键不放手,在文件夹空白处单击鼠标右键,选择 在此处打开Powershell窗口

使用npm 安装相应的模块

webpack 4 需要安装 webpackwebpack-cli 和 typescript 等必要的模块。为了使用 webpack 处理 typescript,还需要 ts-loader
在上面打开的 Powershell 窗口中输入以下命令

1、初始化项目:

npm init

回答一系列的问题(也可以直接回车使用默认值)后,在当前项目文件夹中会出现一个package.json的配置文件。文件内容大概如下所示:

{
"name": "webpacktypescript",
"version": "1.0.0",
"description": "",
"main": "index.js",
"dependencies": {
"ts-loader": "^4.2.0",
"typescript": "^2.8.1",
"webpack": "^4.6.0",
"webpack-cli": "^2.0.14"
},
"devDependencies": {},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}

2、安装需要的各个模块:

npm install webpack webpack-cli typescript ts-loader --save-dev

回答一系列的问题(也可以直接回车使用默认值)后,在当前项目文件夹中会出现一个package.json的配置文件。文件内容大概如下所示:

{
"name": "webpacktypescript",
"version": "1.0.0",
"description": "",
"main": "index.js",
"dependencies": {
"ts-loader": "^4.2.0",
"typescript": "^2.8.1",
"webpack": "^4.6.0",
"webpack-cli": "^2.0.14"
},
"devDependencies": {},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}

3、添加 TypeScript 的配置文件 tsconfig.json

启动 WebStorm 并打开项目,在项目名称上单击鼠标右键 -> New -> tsconfig.json, 添加TypeScipt的配置文件,内容如下所示:

{
"compilerOptions": {
"module": "commonjs",
"target": "es5",
"sourceMap": true
},
"exclude": [
"node_modules"
]
}

4、添加index.html及默认的 src/index.js文件
在项目文件夹中添加html文件,并命名为:'index.html',并编辑文件内容如下所示:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>TypeScript + Webpack 4</title>
</head>
<body> <script src="dist/main.js"></script>
</body>
</html>

在项目文件夹中添加名字为src的文件夹,并在该文件夹中添加名字为index.js的JavaScript文件,文件内容如下所示:

console.log("Hello TypeScript!");

完成以上操作后项目的结构如下所示:

  webpackwithtypescript
|- src
|- index.js
|- index.html
|- package.json
|- package-lock.json
|- tsconfig.json

5、使用webpack-cli打包项目

在控制台窗口(Powershell窗口 或WebStorm的Terminal 都可以) 输入以下命令进行打包:

npx webpack

控制台显示内容如下所示:

D:\SPAProjects\webpacktypescript>npx webpack
npx: installed 1 in 11.482s
The "path" argument must be of type string
D:\SPAProjects\webpacktypescript\node_modules\webpack\bin\webpack.js
Hash: 7dffdd50a425c0f906c2
Version: webpack 4.6.0
Time: 579ms
Built at: 2018-04-18 14:23:26
Asset Size Chunks Chunk Names
main.js 577 bytes 0 [emitted] main
Entrypoint main = main.js
[0] ./src/index.js 33 bytes {0} [built]

打包成功,项目文件夹中会多出 dist/main.js - 这也正是 webpack 4 未指定输出文件时默认的位置。此时在浏览器中打开index.html,并在浏览器中按下F12,进入控制台将会看到 consolr.log() 语句的输出结果。

此时的项目文件夹结构:

  webpackwithtypescript
|- dist
|- main.js
|- src
|- index.js
|- index.html
|- package.json
|- package-lock.json
|- tsconfig.json

webpack 4 没有配置文件时,使用src/index.js作为默认入口,同时使用dist/main.js作为默认出口。
由于TyepScript文件的默认扩展名为.ts,所以并不适合于没有配置文件的默认状况。

6、webpack 配置文件
在项目文件夹中添加名为webpack.config.js的JavaScript文件,并编辑其内容如以下所示:

const path = require('path');

module.exports = {
mode: 'development', entry: './src/index.ts',
output: {
filename: 'main.js',
path: path.resolve(__dirname, 'dist')
}, module: {
rules: [{
test: /\.ts$/,
use: "ts-loader"
}]
},
resolve: {
extensions: [
'.ts'
]
}
};

同时修改package.json如以下内容所示:

{
"name": "webpacktypescript",
"version": "1.0.0",
"description": "",
"main": "index.js",
"dependencies": {
"ts-loader": "^4.2.0",
"typescript": "^2.8.1",
"webpack": "^4.6.0",
"webpack-cli": "^2.0.14"
},
"devDependencies": {},
"scripts": {
"build": "webpack", //添加这一行
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}

完成以上的设置,然后将src/index.js改名为src/index.ts

  webpackwithtypescript
|- dist
|- main.js
|- src
|- index.ts
|- index.html
|- package.json
|- package-lock.json
|- tsconfig.json

使用npm run build命令编译、打包src/index.ts文件:

D:\SPAProjects\webpacktypescript>npm run build

> webpacktypescript@1.0.0 build D:\SPAProjects\webpacktypescript
> webpack Hash: 9bf0b33a5a6b242a917e
Version: webpack 4.6.0
Time: 1683ms
Built at: 2018-04-18 15:03:36
Asset Size Chunks Chunk Names
main.js 2.84 KiB main [emitted] main
Entrypoint main = main.js
[./src/index.ts] 35 bytes {main} [built]

在控制台窗口可以输入npm run build指令进行打包时,项目中src文件夹中的ts文件index.ts被编译,并输出为 dist/main.js

爱书网:www.2ibook.com 一个优秀的视频教学网站,大学各专业的名师课程。免费,免费,免费。
QQ群:762080163

TypeScript + Webpack 4 开发环境搭建(转)的更多相关文章

  1. TypeScript完全解读(26课时)_1.TypeScript完全解读-开发环境搭建

    1.TypeScript完全解读-开发环境搭建 初始化项目 手动创建文件夹 D:\MyDemos\tsDemo\client-demo 用VSCode打开 npm init:初始化项目 然后我们的项目 ...

  2. windows下vue+webpack前端开发环境搭建及nginx部署

    一.开发环境搭建 1.前端框架一般都依赖nodejs,我们首先要安装node.js.请参考http://www.cnblogs.com/wuac/p/6381819.html. 2.由于许多npm的源 ...

  3. Windows 环境下vue+webpack前端开发环境搭建

    一.开发环境搭建 1.前端框架一般依赖node.js,我们首先要安装node.js. 2.由于许多npm 的源都在国外的地址,安装起来特别慢,所以我们这里利用淘宝的镜像服务器. 安装命令为:npm i ...

  4. webpack前端开发环境搭建

    要搭建webpack开发环境,首先要安装NodeJS,后面的过程均在NodeJS已经安装的基础上进行. 1. 首先建立一个工程目录,命名为,其目录结构如下: 其中dist目录用于存放生成的文件,src ...

  5. webpack+angular2开发环境搭建

    升级版之webpack4 + angular5脚手架demo详见: http://www.cnblogs.com/xudengwei/p/8852257.html 刚搭建完一个webpack+angu ...

  6. React+Webpack+Webstorm开发环境搭建

    需要安装的软件 node.js npm包管理 Webstorm 由于6.3.0版本之后会自带npm的包管理所以不需要单独的安装npm nodejs(包含npm)安装在默认路径C:\Program Fi ...

  7. 从零搭建TypeScript与React开发环境

    前言 平时进行开发大多数是基于vue-cli或者create-react-app等官方或者公司内部搭建的脚手架.   我们业务仔做的最多就是npm i和npm run dev或者npm start,然 ...

  8. 第二章 TypeScript 开发环境搭建

    Mac OS X 下 TypeScript 开发环境搭建 一.集成开发环境 WebStrom VSCode 二.安装 TypeScript Homebrew(macOS 缺失的软件包管理器) ruby ...

  9. typescript+react+antd基础环境搭建

    typescript+react+antd基础环境搭建(包含样式定制) tsconfig.json 配置 // 具体配置可以看上面的链接 这里module moduleResolution的配置都会影 ...

随机推荐

  1. 从0系统学Android--4.1探究碎片

    从0系统学Android--4.1探究碎片 本系列文章目录:更多精品文章分类 本系列持续更新中.... 初级阶段内容参考<第一行代码> 第四章:手机平板要兼顾--探究碎片 平板电脑和手机最 ...

  2. 12C-使用跨平台增量备份减少可移动表空间的停机时间 (Doc ID 2005729.1)

    12C - Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup (Doc ID 20057 ...

  3. Python—定时任务(APScheduler实现)

    简介                 APScheduler的全称是Advanced Python Scheduler.它是一个轻量级的基于Quartz的 Python 定时任务调度框架.APSche ...

  4. ism 发布

    ism 发布 ism 发布 ism 发布

  5. C# 执行 cmd 命令, 不显示任何窗口

    代码如下: 调用的命令:reg export exportPath registryKey -y Process proc = new Process(); proc.StartInfo.FileNa ...

  6. 获取IP的三种方法

    第一种 取本主机ip地址 public string GetLocalIp() { ///获取本地的IP地址 string AddressIP = string.Empty; foreach (IPA ...

  7. 一文带你深入浅出Spring 事务原理

    Spring事务的基本原理 Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的.对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤进行: 获 ...

  8. python的pstuil模块总结

    import psutil print(dir(psutil)) # 查看逻辑cpu的个数 print(psutil.cpu_count()) # 查看物理cpu的个数 print(psutil.cp ...

  9. 如何优雅规避NPE

    项目中尤其是在持久层,难免会有大量的针对集合,对象,字符串的操作,为了程序的健壮性,我们不得不进行判空,像下面箭头式编码吗? if(null!=person){ ... if(null!=addres ...

  10. 【spring-boot 源码解析】spring-boot 依赖管理梳理图

    在文章 [spring-boot 源码解析]spring-boot 依赖管理 中,我梳理了 spring-boot-build.spring-boot-parent.spring-boot-depen ...