使用 grunt-ts 编译 typescript 项目
不是这世界变化快,是我一直没关注。这几年js发展这么快是我怎么也想不到的,今天研究的是js界高大上的Grunt构建工具,因为发现很多老外的开源项目都在用这个。研究一下,还挺方便的。
首先看一下我的目录结构
我的需求是这样的,core文件夹里有多个.ts文件,需要按照我指定的顺序编译成一个all.js文件,为什么要指定顺序,是因为js是从上到下执行,没执行到的就是不存在的。如果顺序不对的话运行时会报各种找不到类的错误。除了这个还有以下需求:
- 编译的
all.js
放到build/
目录 - 需要生成
build/all.js.map
- 需要生成
build/all.d.ts
- 需要生成
build/all.min.js
- 基于ES5,Commonjs编译
- 编译后的文件删除注释
- 编译后将build目录下的所有文件复制到test文件夹里做测试
估计已经涵盖大部分typescript开源项目的需求了,我不知道其他人是怎么做这些的,我自己之前一直使用WebStorm来写TypeScript,WebStorm里有一个叫做File Watcher的功能,可以把它配置成每次发现文件改动自动调用编译器tsc来编译TypeScript,它有一个Arguments的文本框,可以添加tsc的编译参数。
我都是这么填的:
我在reference.ts里指定了ts文件的顺序,所以只编译这一个文件,就达到了按指定文件顺序全部编译的目的。 我写了绝对路径,这样就可以在任何目录里编译了。 因为不能复制文件,就只能把core项目直接编译到test文件夹里做测试了。
测试完后,我还要手动手动把all.js复制回build文件夹,想办法生成min.js等一堆麻烦事。。。直到发现了Grunt。
用Grount实现需求
安装cli
来到项目路径
npm init 命令来创建一个 package.json
文件,回答问题会自动创建package.json
,其实一路回车就行了,都有默认答案
好多属性,不知道有什么用的,删掉!看官网教程好像只需要一个name ,一个 version就行,其他删掉了。
装第一个依赖项目,必然是grunt
本身
安装完成,目录里多了一个node_modules
目录,这是nodejs模块安装到的目录。
修改gitignore
.gitignore
文件里加入这两个目录,不然被传到github上就不好了
现在package.json
变成这样了
因为安装grunt时时加了--save-dev
参数,所以会被自动加进依赖里
安装今天的主角,TypeScript的编译器插件grunt-ts
再看package.json
如下:
安装生成all.min.js的插件
安装copy插件
现在看一眼package.json
应该变成这样了
ok ,全部安装完毕,现在可以看grunt-ts官网介绍各种参数怎么用吧
添加一个Gruntfile,基于官网的例子直接修改的
可以编译了,打开命令行,输入grunt ,应该是这样的
Done了,没有错误!