Webpack - 忽略 require() 中的加载器
Webpack - ignore loaders in require()?
我有一个 TypeScript 项目,我正在与 Webpack 捆绑在一起。这是我正在编写的开源库的演示/文档应用程序,因此我想将一些源代码作为文档的一部分展示。
在我的 webpack 配置中,我有:
loaders: [
{ test: /'.ts$/, loader: 'ts'},
{ test: /'.css$/, loader: 'style!raw' },
{ test: /'.html/, loader: 'html' }
]
这适用于转译和捆绑我的 TypeScript 文件。在我的一个应用程序组件中,我这样做:
basicCodeT: string = require('./basic-example-cmp.html');
basicCodeC: string = require('!raw!./basic-example-cmp.ts');
将源代码加载到一个字符串中,然后我想在文档中显示该字符串。
如您所见,第二行中有一个前导!
,我发现它似乎从配置中"绕过"默认加载器并将原始 TypeScript 加载为字符串。
在我的开发版本中,这是有效的,但是当我使用 UglifyJsPlugin 和 OccurrenceOrderPlugin 进行"生产"构建时,我得到以下输出:
ERROR in ./demo/src/basic-example-cmp.html
Module build failed:
@ ./demo/src/demo-app.ts 24:26-61
这与我尝试要求原始 TypeScript 的源中的行相对应。
因此,我想在应用程序构建过程中通过 TS 编译器传递basic-example-cmp.ts
,但也希望要求它作为应用程序中的原始文本。
那么我的问题是:有没有一种正确的方法告诉 webpack 在特定需要的情况下"忽略"加载器?
我为!
添加前缀的方式是否正确?是黑客吗?
更新
事实证明,我的问题仅仅是由于 Webpack 处理 HTML 模板的方式 - 它不喜欢 Angular 2 模板语法,请参阅:https://github.com/webpack/webpack/issues/992
您可以在 webpack 配置文件中添加两个感叹号来忽略加载器
!!raw!file.ts
一个感叹号只会禁用预加载器!
https://webpack.js.org/concepts/loaders/#inline
据我所知,这是您能够以两种不同方式加载文件的唯一方法。我希望问题是您的生产版本中的路径不同。
我建议使用 --display-error-details
标志运行 webpack,以获取有关失败原因的更多信息。
有没有一种正确的方法告诉 webpack 在特定需求情况下"忽略"加载器?
是的。根据需要更新{ test: /'.ts$/, loader: 'ts'},
中的test
。
- 如何使用url加载程序在webpack中导入多个图像
- 忽略Safari's初始页面加载popstate
- Webpack - 忽略 require() 中的加载器
- 如何使浏览器忽略缓存的数据并重新加载它
- 可以忽略“加载脚本时出错”js 错误吗?
- Requirejs 忽略可选依赖项的加载错误
- ng-include 忽略加载指令
- 如何在第一次加载页面时忽略trigger()方法
- 如何忽略所有的pathNames并在我的站点根目录下加载我的index.php
- 如何延迟播放HTML5音频,但忽略加载音频文件的延迟
- 忽略脚本错误并继续加载页面
- 当字体存在于本地时,谷歌字体加载被忽略
- 哪个javascript加载选项对页面加载时间的影响可以忽略不计
- 忽略页面加载时的指令
- 预加载器不会忽略websocket - pace js
- 分隔逗号并忽略双引号(来自filereader /加载的文件-使用regex)
- 警告:从异步加载的外部脚本调用document.write()被忽略.这是如何解决的
- jQuery:在等待窗口加载时忽略第三方内容
- 用jQuery设置高度忽略初始加载时的内容,但在刷新后有效
- 使用headjs加载jquery会导致忽略ie8中的css背景颜色