TypeScript + Webpack 4 开发环境搭建(转)
前段时间接触到 Microsoft 的 Microsoft.AspNetCore.SpaTemplates 模板,生成的项目使用的默认语言是 TypeScript,虽然以前在此之前并没有用过TypeScript,但第一看上去有种很熟悉的感觉。当然,也有人说 TypeScript 是 JavaScript 版本的C#,不管怎么说,有了学习的兴趣。另外,据说新版的webpack 4相比以前的版本的更快的打包速度,于是就有了把它们结合在一起使用的想法。
准备工作
请事先安装好 Node.js
新建项目文件夹,按住 Shift 键不放手,在文件夹空白处单击鼠标右键,选择 在此处打开Powershell窗口
使用npm 安装相应的模块
webpack 4 需要安装 webpack、webpack-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。
QQ群:762080163
TypeScript + Webpack 4 开发环境搭建(转)的更多相关文章
- TypeScript完全解读(26课时)_1.TypeScript完全解读-开发环境搭建
1.TypeScript完全解读-开发环境搭建 初始化项目 手动创建文件夹 D:\MyDemos\tsDemo\client-demo 用VSCode打开 npm init:初始化项目 然后我们的项目 ...
- windows下vue+webpack前端开发环境搭建及nginx部署
一.开发环境搭建 1.前端框架一般都依赖nodejs,我们首先要安装node.js.请参考http://www.cnblogs.com/wuac/p/6381819.html. 2.由于许多npm的源 ...
- Windows 环境下vue+webpack前端开发环境搭建
一.开发环境搭建 1.前端框架一般依赖node.js,我们首先要安装node.js. 2.由于许多npm 的源都在国外的地址,安装起来特别慢,所以我们这里利用淘宝的镜像服务器. 安装命令为:npm i ...
- webpack前端开发环境搭建
要搭建webpack开发环境,首先要安装NodeJS,后面的过程均在NodeJS已经安装的基础上进行. 1. 首先建立一个工程目录,命名为,其目录结构如下: 其中dist目录用于存放生成的文件,src ...
- webpack+angular2开发环境搭建
升级版之webpack4 + angular5脚手架demo详见: http://www.cnblogs.com/xudengwei/p/8852257.html 刚搭建完一个webpack+angu ...
- React+Webpack+Webstorm开发环境搭建
需要安装的软件 node.js npm包管理 Webstorm 由于6.3.0版本之后会自带npm的包管理所以不需要单独的安装npm nodejs(包含npm)安装在默认路径C:\Program Fi ...
- 从零搭建TypeScript与React开发环境
前言 平时进行开发大多数是基于vue-cli或者create-react-app等官方或者公司内部搭建的脚手架. 我们业务仔做的最多就是npm i和npm run dev或者npm start,然 ...
- 第二章 TypeScript 开发环境搭建
Mac OS X 下 TypeScript 开发环境搭建 一.集成开发环境 WebStrom VSCode 二.安装 TypeScript Homebrew(macOS 缺失的软件包管理器) ruby ...
- typescript+react+antd基础环境搭建
typescript+react+antd基础环境搭建(包含样式定制) tsconfig.json 配置 // 具体配置可以看上面的链接 这里module moduleResolution的配置都会影 ...
随机推荐
- FTP 代码含义
vsftpd.config 部分参数含义anonymous_enable=NO #不允许匿名用户登陆 local_enable=YES #vsftpd所在系统的用户可以登录vsftpd write_e ...
- openstack-neutron安装与配置
一.实验目的: 1.理解neutron服务在OpenStack中的作用 2.掌握在控制节点上安装配置neutron的方法和步骤 3.掌握在计算节点上安装与配置neutron的方法和步骤 二.实验步骤: ...
- [C]表达式结合规律和运算符优先级
表达式结合规律 如果运算符具有相同的优先级(precedence)有些表达式的结合方式是从左往右,有些则是从右往左结合的(例如赋值运算符): 表达式 结合律 组合方式 a/b%c 从左往右 (a/b) ...
- MyBatis核心对象之StatementHandler
MyBatis核心对象之StatementHandler StatementHandler ResultHandler ParameterHandler Executor org.apache.iba ...
- Linux使用之centos下安装Java环境并运行Java程序
前言 在Java中所有的程序都是在JVM上运行的.Java虚拟机(JVM)读取并处理经过编译的与平台无关的*.class文件.因为Java语言源程序编写后,先使用Java伪编译器进行伪编译,将其转换为 ...
- C sharp #005# 对象与对象变量
饮水思源:金老师的自学网站 索引 自动装箱 “只读”对象 设定启动窗体 ShowDialog与Show 自动装箱 基本类型的变量值可以自动装箱到一个object对象中, 反过来,object对象也可以 ...
- Deepnude算法“tuo”衣服
PS:我不是偷窥狂.我是技术的爱好者 换脸视频后AI又出偏门应用:用算法“tuo”女性衣服 据美国科技媒体Motherboard报道,一名程序员最近开发出一款名叫DeepNude的应用,只要给Deep ...
- Tuple<T1,T2,.........T> 元组简单使用
元组:一个数据结构,逗号分隔,用于传递一个程序或者操作系统的一系列值得组合 NET Framework直接支持一至七元素得数组 Tuple<T1> Tuple<T1,T2> T ...
- Angular ElementRef详解
一.为什么要用ElementRef Angular 的口号是 - "一套框架,多种平台.同时适用手机与桌面 (One framework.Mobile & desktop.)&quo ...
- ArcGIS api for JavaScript 3.27 聚合(cluster)
基础聚合:只聚合,不显示聚合的数量 // Basic Clustering require([ "esri/map", "esri/layers/FeatureLayer ...