TypeScript不是核心JavaScript,所以webpack需要一点额外的帮助来解析.ts
文件。 它通过使用装载器来做到这一点。 加载器是一种配置webpack如何转换我们的bundle中的特定文件的输出的方法。 我们的ts-loader
包能够处理TypeScript文件的这种转换。
在需要/导入模块时,可以内联配置装载程序:
1 | const app = require('ts!./src/index.ts'); |
加载器通过使用!
字符来分隔模块引用和将要运行的加载器。可以使用多个加载器,并且它们以同样用!
分开。装载机从右到左执行。
1 | const app = require('ts!tslint!./src/index.ts'); |
虽然软件包命名为
ts-loader
,tslint-loader
,style-loader
,我们不需要在我们的配置中包含-loader
部分。
在以这种方式配置加载器时要小心 - 它将应用程序不同阶段的实现细节结合在一起,因此在许多情况下可能不是正确的选择。
首选方法是通过webpack.config.js文件配置装载程序。例如,TypeScript加载器任务看起来像这样:
1 | { |
这将运行typescript编译器,它遵循上面指定的配置设置。 我们希望能够处理其他文件,而不仅仅是TypeScript文件,所以我们需要指定一个加载器列表。 这是通过创建任务数组来完成的。
此数组中指定的任务被链接。 如果文件匹配多个条件,则将按顺序使用每个任务处理它。
1 | { |
每个任务都有一些配置选项:
/\.ts$/
。/ node_modules /
。path.resolve(__ dirname,'app / src')
。preLoaders数组的工作方式就像加载器数组一样,它是一个单独的任务链,在loader任务链之前执行。
Webpack还允许我们加载非JavaScript资源,例如:CSS,SVG,字体文件等。为了将这些资源附加到我们的包中,我们必须在我们的应用程序模块中导入它们。 例如:
1 | import './styles/style.css'; |
@import
和url
引用解析为模块。<head>
标签中插入带有捆绑CSS的样式标签。