用于创建前端库的jspm工作流
jspm workflow for creating front-end libraries
将用TypeScript编写的库转换为ES5的当前推荐做法是什么?
JSPM文档似乎面向web应用程序(即jspm bundle-sfx
)。
我在谷歌上能找到的所有文章似乎都假设了网络应用程序的工作流程,而不是图书馆的工作流程。
我的项目有以下设置:
-
它取决于
react
、flux
和jquery
,均通过jspm
安装,并在config.js
中正确配置 -
源
.tsx/.ts
文件位于src/
树中,以及它们对应的已转译.js
文件 -
我可以用
jspm bundle
创建一个捆绑包,但是,这仍然需要我的库的最终用户使用SystemJS
我想要的是将src/
下的整个树捆绑到一个文件中,而不使用库(如react
或jquery
)。我该怎么做?
到目前为止,我已经尝试过jspm bundle src/<MY_MAIN.js> - react - jquery <OUT.js>
,但用户仍然需要一个模块加载器来与MY_MAIN.js
中导出的符号交互。我还想为用户提供一个手动导入带有<script>
标记的库的选项。自行执行的捆绑包似乎不起作用。一旦通过<script>
标签加载,就无法全局访问任何符号,并且我不能排除框架代码。
我想强调的基本方法有三种,针对不同的最终用户工作流程
1.<script/>
标签方法
在这里,创建一个条目.ts
文件,该文件导出库的主要符号,如下所示:
// Main.ts
import {MyLib} from "./components/MyLib";
import * as React from "react";
import * as ReactDOM from "react-dom";
/**
* browser exports
* note, typescript cannot use interfaces as symbols for some reason, probably because they are not emitted in the compiled output
* running `jspm bundle-sfx` results in the code here being accessible in <script /> tag
*/
(function (window) {
window.MyLib = MyLib;
window.React = window.React || React;
window.ReactDOM = window.ReactDOM || ReactDOM;
})(typeof window !== "undefined" ? window : {});
然后运行jspm bundle-sfx Main.js my-lib.sfx.js
,对browserify
也一样,只是我们必须使用commonjs
样式的require()
而不是ES6样式的import
2.凹形&通过常规gulp/grunt
最小化src文件
这应该是我们都熟悉的的旧工作流程
3.假设ES6与将使用库的应用程序兼容
将代码作为ES6/TS与.d.ts
一起分发,并假设用户还将使用jspm/system或最终的ES6模块加载器方法来加载模块
- 如何在批准露天共享中工作流的审核步骤之前添加确认对话框
- 用于绘制工作流图的JavaScript框架
- 将异步工作流更改为承诺(蓝鸟)
- if 子句在 JavaScript 中限定工作流
- 了解 JavaScript 对象实例或工作流
- 主题和弹性逻辑工作流
- 未捕获的类型错误:对象#<HTML对象元素>没有方法'重新绘制工作流'
- 如何在gump工作流中同时在独立文件和依赖文件中输出javascript
- 在CRM 2011中从JavaScript执行工作流
- 访问Alfresco工作流I'我从JavaScript开始
- 使用 JavaScript 框架的设计器工作流
- 节点 JS 使用异步请求同步工作流
- iOS PhoneGap 调试工作流
- 通过 JavaScript 结束 nintex 工作流
- RxJS 和主/工作线程工作流
- CRM 2011 - 使用 JavaScript 启用潜在顾客实体的工作流加载
- 使用Alfresco获取工作流的文件名
- 将流类型检查添加到 grunt 服务器开发工作流
- django 中的 JavaScript 开发工作流
- 用于创建前端库的jspm工作流