【发布时间】:2018-02-12 18:12:20
【问题描述】:
我正在使用安装了 Webpack Runner 扩展的 Visual Studio 2017。我有以下 TS 文件:
- /Scripts/TypeA/A.ts
- /Scripts/TypeB/B.ts
并希望将它们转换为以下内容:
- 脚本/TypeA/A_transpiled.js
- Scripts/TypeB/B_transpiled.js
没有“干净”的方式来做到这一点!
-
按照“多编译器”代码示例,Webpack 似乎支持定义多个导出:https://github.com/webpack/webpack/tree/master/examples/multi-compiler。但是,这在 VS 2017 中不起作用。我收到以下错误:
配置对象无效。 Webpack 已使用与 API 架构不匹配的配置对象进行初始化
-
我可以使用这里显示的“名称”参数:
output: { filename: '[name].js', path: path.resolve(__dirname, './Scripts/') }
但它仍会在同一文件夹中创建所有文件(脚本)。
-
这样做的最好但很老套的方法是使整个路径成为条目名称的一部分,如下所示:
entry: { 'Scripts/TypeA/A_transpiled': './Scripts/TypeA/A.ts', 'Scripts/TypeB/B_transpiled': './Scripts/TypeB/B.ts' }, output: { filename: '[name].js', path: path.resolve(__dirname, '') }
这将在正确的位置创建文件。然而,这还有其他缺点。例如,将您的 ts 文件作为库导出和使用将需要您使用整个路径(如果您使用“name”参数作为库名称),这可能会变得很麻烦。
这似乎是一个巨大的缺点/缺失的功能。我是否遗漏了什么,或者在使用“多编译器”方法时我做错了什么?为什么这么简单的东西没有在 Webpack Task Runner 中实现?我应该考虑完全摆脱 Webpack 并只依赖 Gulp 或 Grunt 吗?
【问题讨论】:
-
听起来扩展程序没有使用您期望的 Webpack 版本。尝试在 VS 中配置 Web 包管理。通过直接从命令提示符运行 Webpack 来验证它是否有效。
-
我使用 npm 重新安装了 webpack,这样我就拥有了最新版本的 webpack (3.11.0)。我能够使用上面链接中列出的“多编译器”方法。谢谢!
-
您应该将其发布为答案。对于所有这些 IDE 插件来说,对环境变量和包管理器版本以及各种东西做出假设真的很容易。
标签: webpack visual-studio-2017 output task-runner-explorer