假设您是一位插件开发者,并且拥有超过 2-3 个插件。首先,您是一个了不起的人,因为您创建了插件。做得好 👏🏻
现在假设一个新的 TypeScript 版本发布了...或者一个新的 Angular 版本...或者一个新的 Vue 版本...或者一个新的 NativeScript 版本...也许有一些重大更改或功能您现在想要集成?您现在需要维护所有插件仓库并分别更新它们,您对此感觉如何?也许您不介意?
然而,我们每次都感到不寒而栗,我们怀疑许多人也是这样。
大多数插件仓库都有自己的演示应用程序(通常是 3 个:Angular、Vue 和 Vanilla),所有这些都有自己的包依赖项、自己的 tsconfig、自己的 App_Resources,甚至自己的重复演示代码,这使得插件维护非常耗时,因为需要更新依赖项或配置。
当我们说“简化生活”时,我们指的是为您自己和整个社区。因为我们非常喜欢您的插件!但是没有人喜欢的是,当出现一个主要版本时,我们的团队和项目必须等待插件兼容性。其他技术社区和/或框架中也存在这种情况。
我们希望解决这个问题,不仅是为了现在,还要提供一种方法,使将来在这种情况下更容易。工作区包含有用的工具,可以消除维护通常所需的许多无聊的日常工作,并真正让您专注于重要的源代码。
让我们深入了解细节。 - 或者,如果您更喜欢 观看视频,您可以在这里观看。
工作区旨在管理一组绑定到 npm 范围的插件。
如果您管理多个 npm 范围,您可以为每个范围创建一个工作区来简化您的开发生活。
myscope
- 通常这将是您的 npm 用户名或您的组织)npm run setup
npm run config
您的插件工作区现已设置完毕。
您现在已准备好添加要管理的工作区中的包。
npm run add
这将提示您输入要添加的包的名称。
这处理了大量通常无聊和乏味的工作,例如
注意:您也可以轻松地引入现有的插件 - 查看此内容以供参考
npm start
这将打开一个交互式显示,阐明在工作区中可以做什么。您可以键入 {package-name}.build
以自动向下钻取到构建任务列表并按 ENTER 键。
您的包现在已构建到 dist/packages/{package-name}
并准备发布到 npm。
构建工具会自动处理将您的 README、LICENSE、类型和平台(如果存在)复制进来。
Angular 集成通常也涉及相当多的日常设置,因此如果您的插件需要特定的 Angular 集成,您可以执行
npm run add-angular
您将被提示键入要添加 Angular 支持的包的名称。
注意:通常,插件不需要 Angular 特定内容,除非它们提供自定义视图组件 - 并非总是如此,但在考虑您的插件是否需要 Angular 特定内容时,这是一个很好的经验法则。该工具在模块中添加了一个不错的 registerElement
行,如果您的插件需要它,则已准备就绪
这将正确设置 Angular 位,以便使用 ng-packagr
构建,以实现 Angular 合规性,现在以及未来。
当您使用 npm run add
时,它已经添加了一个可共享的演示结构,允许您编写一次演示代码,并且只需在所有演示风格中使用它即可。
您始终可以在:tools/demo/{package-name}/index.ts
中找到它
这是一个可以管理所有演示代码的类。它在所有演示中自动扩展,因此您可以将演示视图标记绑定到您编写过一次的代码。
例如
tools/demo/awesomeplugin/index.ts
:import { DemoSharedBase } from '../utils';
// ready for you to bring classes and symbols in to test out
import { } from '@myscope/awesomeplugin';
export class DemoSharedAwesomeplugin extends DemoSharedBase {
testIt() {
console.log('test awesomeplugin!');
}
}
测试完您的包并认为它已准备好发布后,请将其发布到 npm!
package.json
详细信息。README.md
反映了一些关于使用方面的有帮助的内容。注意:请确保您已登录要发布的 npm 用户名。
npm whoami
// 确认是否已登录以及哪个用户名npm login
// 登录
npm run publish-packages
您可以键入单个包名、用逗号分隔的包列表,或者不键入任何内容并按 Enter 键以发布工作区中的所有包。然后,系统将提示您输入显式版本,或者您只需按 Enter 键即可自动将修订版本向上提升(这也处理 alpha、beta、rc semver 版本字符串)。
无论您在工作区中管理 1 个、几个还是 100 个包,该工具都能满足您的需求。为了避免精神负担并提高专注力和效率(以及 IDE 速度),您可以利用专注模式进行独立的插件开发。我们一直在使用它们。
npm start
在交互式显示的底部选择某个包的专注模式。这将隔离所有演示应用程序以排除任何其他包的源代码,并将其依赖项向下钻取到仅包含专注的包。此外,如果使用 VS Code,它还将额外地隔离 IDE 的文件树,使其仅包含专注的包。更多 IDE 支持即将推出。
您可以使用 npm start
交互式菜单中的 focus.reset
选项将焦点重置为带回所有包并重置所有演示。
啊,是的!这确实是使用工作区的最大好处。它基于 Nrwl 的出色 Nx 开发工具,该工具提供有用的工具,允许 TSC 在进行改进或包依赖项更改时引入新的迁移,从而帮助插件开发者获得 NativeScript 的最新更改,从而最大限度地减少每个人维护其插件所需的劳动力。
事实上,我们很快就会添加第一个迁移,它会自动添加 Vue、React 和 Svelte 演示应用程序风格,这些风格已经为您的工作区设置好了,因此您今天编写的任何演示代码都可以轻松地绑定到这些额外的风格中的视图,以便您使用流行的 NativeScript 集成来享受演示插件的乐趣。