scrat-team / scrat

Webapp Modular Framework
http://scrat-team.github.io/
773 stars 147 forks source link

scrat install component有缓存? #63

Closed PetersonLian closed 8 years ago

PetersonLian commented 8 years ago

我之前自己建立一个让scrat使用的component,然后我发现我component.json里头js名字写错了,故而我在我自己的github repo里头提交正确的component.json。 但,问题是我执行scrat install,依然是报错。 最后安装的控件,也是错误名字的js

PetersonLian commented 8 years ago

应该指定某个模块安装 scrat install XXX/XXX

PetersonLian commented 8 years ago

其实不是缓存,应该是因为我虽然更新了正确的component.json。但是tag还是使用老的,所以总是安装老的代码

atian25 commented 8 years ago

建议不用 scrat install , 用 fis 自带的 install.

scrat install 当时做的比较早, 属于探索阶段.

参见: https://github.com/fis-components/components

PS: 我们 scrat 这边的实践, 目前倾向于不用第三方 components:

PetersonLian commented 8 years ago

我系统内的scrat -v 0.5.18,是最新版吗? npm源上是跟此代码基本同步的吗?发新版本会更新npm的源吗?

PetersonLian commented 8 years ago

还有一个问题。 关于第三方的components,我采用您说的方式一

直接人工拷贝进来, 一般这种第三方类库升级的频率不是很高

来解决。 那么,假设我这库文件叫a.a.a.a.a.a.js,那么问题来了。我该如何人工拷贝进来? 1) 我是放到component_modules里头呢?按照一定的规则? 2) 我目前是直接将其放入views文件夹里头?

我直接放入views文件夹里头,但当我通过require.async加载这个文件的时候,我需要给这个文件弄个alias别名。 但我如果没有理解错的话,scrat默认只会给component_modules文件夹下的文件建立alias。 那么如何手动建立alias呢?

atian25 commented 8 years ago

git tag 跟 npm 是实时的。

atian25 commented 8 years ago

要看下上面我给出的framework-conf的实现,我印象中会分析 components 目录的。

webapp 模式我这边现在很久不用了,@zack 来回答下吧

atian25 commented 8 years ago

@zack-lin

zack-lin commented 8 years ago

component_modules 存放第三方公共组件,views 存放非模块化资源,components 存放内部业务组件 /component_modules/scrat-team-zepto/1.1.2/index.js /component_modules/scrat-team-zepto/1.1.2/component.json

PetersonLian commented 8 years ago

看样子,我的a.a.a.a.a.a.js的文件,我应该按照component_modules的规矩,手动放入到component_modules里头。 还有一个思路是,我扩展scrat的index.js里头的fis设置信息,主要是添加postpackage选项,然后自己重新Make一个scrat命令

atian25 commented 8 years ago

不用, 直接放到 components 目录即可.

https://github.com/scrat-team/scrat/blob/master/plugins%2Fprepackager%2Fframework-conf.js#L118

这里有分析 components 目录的

PetersonLian commented 8 years ago

恩。components也可以。

PetersonLian commented 8 years ago

我最后采用方法。假设库文件名字叫做a.js 我直接把a.js复制到components/a/a.js里头。 就有alias. 另外,两点问题。 1) 我views目录下面,我想再某个文件里头,譬如lib.js里头,直接inline a.js的内容,我目前写法是inline(../../components/a/a.js),这样合适吗? 2) 假设我的库文件名字叫做a.b.c.d.e.js,那么如果此时放到components里头(不改名的前提下),应该怎么放到components里头,从而能有alias。 可不答。

atian25 commented 8 years ago

第一个,为何要 inline,通过 combo 就能解决请求问题了。而且 components parse 后会被 define 包裹,你 inline 不来。

第二个,我记得可以在 fis-conf 里面手动设置 alias 的。还是在我给出的那个文件里面分析的