项目能不能配置,脚本不去解析某些模块?

最新准备的3.x框架使用和引擎相同。
整个框架是插件脚本实现的。

// 比如都是这样导入的。
import { state } from 'lcc';

在编辑器中虽然提示无法解析模块’lcc’,被视为外部模块。预览也是正常的。
但是,发布的时候好像必须解析这个’lcc’模块,否则就报错停止。
希望项目有配置这种外部模块的地方,不需要脚本解析,就像’cc’,‘cc/env’ 这些引擎的模块。

预览时候也没找到 lcc 吧,你lcc是在哪的

‘lcc’ 是在插件脚本里面的, 希望能配置编译的时候忽略这个模块的解析, 就像使用 'cc’模块一样。
编辑器里面和预览是正常的

能不能加个这种配置, 提高下可扩展性啊
或者,发布的时候即使 提醒了是外部模块, 也可以正常发布。
预览的时候就正常使用,发布的时候应该也可以忽略的吧

3.2 版本只能在普通脚本的组件里面使用@menu了吗, 我怎么感觉在插件脚本里面定义没起作用了。
不知道是不是我用法的问题。
3.x 怎么感觉扩展能力在变弱了, 多了很多必须那样使用的规定,缺少了灵活性。

是的插件脚本不能使用 @menu

你说的在插件脚本里定义了模块 lcc,是怎么个定义法。模块是不能定义的,你不会说的是 window.lcc = xxx吧

你想用import lcc from “lcc”,现在别无他法,只能通过放在node_modules 里才可以。

我周一看能不能给你仓库提点PR啥的

那还是算了吧,现在我不弄3.x了。
扩展性太差了, 普通脚本做出来的框架或者系统功能,使用繁琐,体验感觉是极差, 只能做点简单单一的功能吧。
这个扩展便利性越来越差了啊,什么时候能像unity那样就好了,直接可以做一个类型游戏的插件,而且也不会太难用。

你好。我看了一下,https://gitee.com/nomat/lcc-framework-client 这个是你的项目吧。

你的整个框架是以插件的形式提供的,然后所有相关代码,你是打包成了 assets/scripts/lcc-framework.js(CommonJS 模块)。

这里建议你这样让你的用户使用脚本:

  • assets/scripts/lcc-framework.js 拷贝至他们的项目目录里。默认放进去就行,不要勾选插件脚本。

  • 如此引用:import lcc from './lcc-framework.js'; new lcc.Client()。其中 './lcc-framework.js' 是相对于调用模块的路径。注意后缀是需要的。


我能理解你为什么希望你的用户以 import lcc from "lcc" 这一的方式去使用你的库 —— 这样明显很简洁。

from "lcc" 中的 "lcc" 称为裸模块说明符(Bare module specifier)。

直到 Creator 3.2,Creator 唯一能以裸模块说明符形式去导入的模块只能存在于 node_modules 中,作为比较:

  • 浏览器甚至不允许你使用裸说明符,他们只支持相对路径。

  • Node.js 和我们一样也只支持以裸说明符引用 node_modules 中的模块。

因此,如果非要以 from "lcc" 的形式去使用,你应该将你的模块发布到 npm 里,让用户以 npm install 的形式安装。

会不会好转

我们暂定计划在 3.3 放出“实验性质” 的 import map 支持,届时,你可以不用发布到 npm 里。而是让用户在项目中定义一个映射:

{
  "imports": {
    "lcc": "./assets/script/Normat/lcc-framework.js"
  }
}

用户便可以以 from "lcc" 的方式去引用你的库了。

1赞

谢谢回答。
其实在3.x版本中,整个框架是打包为System模块的。所以直接放到编辑器里面是可以直接运行的,而且预览也是一切正常。
有点bug 就是在普通脚本中使用的时候会报错没有找到’lcc’模块,被视为外部模块, 但是预览使用也是没有任何问题。
最致命的在发布的时候,报错‘lcc’模块就直接发布终止了,后面就无法继续了。

所以问题,不在于普通脚本里面引用问题, 因为在编辑器和浏览的时候是正常的, 直接视为外部模块就可以了。最主要是 发布的时候, 为什么不和预览的时候一样的处理,应该就可以了。
还有不清楚为什么限制了在插件脚本里面使用 @menu 有这个必要吗?

给个demo出来吧
链接:https://pan.baidu.com/s/1b22Wepyzkc3SVb3nKSwdtg
提取码:ayng

这个框架系统是很贴近引擎的,在普通脚本里面不需要特殊处理,应该按照引擎库的引用方式即可。
当前,虽然会报外部模块, 但是使用在编辑器和浏览都是正常的。

主要问题就是怎么配置’lcc’ 和 引擎的’cc’ 在脚本中使用同样的处理方式, 这个模块和’cc’一样,是不需要去处理的。
还有就是限制 @menu ,如果没有特别原因的话,就是在限制3.x扩展的可能性,作为引擎不是应该扩展性越高越好吗。开发者可以能灵活方便的扩展,不知道是不是因为考虑到插件脚本里面扩展多了,用户找起来混乱麻烦,但是也不能因噎废食吧。