我可以在没有转译器的情况下使用 JSPM 吗?

Can I use JSPM without a transpiler?

我正在使用 jspm 0.16.2。

我正在使用这个test project

当我将 Transpiler 设置为 none 时:transpiler: "none"

我收到一个错误 XHR error (404 Not Found) loading http://localhost:53404/none.js

如果我将转译器设置为 'test' 它会给出相同的错误,除了它会查找 test.js

这是 jspm 的错误吗?

我不想使用转译器,而是使用 system.js 加载 AMD 模块。

当我从 config.js 中删除转译器选项时,它会尝试加载 Traceur。

我不想在运行时使用 Transpiler 运行。

不清楚您要做什么。如果您使用 ES2015 功能(例如 ES2015 模块、let 等),那么您需要转译器。如果你编写的代码没有 ES2015 特性,那么将不会加载任何转译器。您可以通过将 ES5 代码放入 main.js 并检查调试器的“网络”选项卡来检查这一点。 browser.js不会下载。

您在 System.config 中为 transpiler 输入的字符串实际上就是转译器文件本身。在 "babel" 的情况下,它映射到 npm:babel-core@5.8.3(来自 map 字段),当与 path 字段结合时,它指的是 jspm_packages/npm/babel-core@5.8.3 然后在那个目录,文件 .jspm.json 将入口点指向 browser.js,这是客户端转译器文件本身。

无论您将 transpiler 设置为什么字符串,jspm 都会将 System 设置为指向它(如果您没有映射它,路径将只是 baseURL )并且拿来。当然,它不适用于任何任意字符串,例如 nonetest。默认情况下,如果您没有指定任何内容,正如您所观察到的那样,默认值为 traceur.

如果客户端转译是您要避免的,您确实可以通过 jspm bundle 来选择转译服务器端。

对于仅使用 ES5 和 AMD 的代码,无需转译,请查看上述 repo 的 no-transpile 分支。请注意,即使 transpile 仍设置为 "babel"browser.js 也不会下载。