Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

输出目录设置问题? #24

Open
calledT opened this issue May 17, 2015 · 1 comment
Open

输出目录设置问题? #24

calledT opened this issue May 17, 2015 · 1 comment

Comments

@calledT
Copy link

calledT commented May 17, 2015

我想把目录结构为

└── scss
    └── common.scss

的内容输出为

└── css
    └── common.css

想下面这样设置

fis.config.set('settings.parser.sass', {
    include_paths: [],
    output: 'css/'
});

输出结果变成了

└── css
    └── scss
        └── common.css

正确的配置应该是怎样的呢?

@fouber
Copy link
Contributor

fouber commented May 17, 2015

@calledT

fis最开始设计工具的时候,发现不应该让插件自己决定怎么输出,否则这个插件输出到output,那个插件输出到dist,这个插件有A规范,那个插件有B规范,就不能得到一致的架构设计了。

所以,fis规定:

插件只处理内容,fis负责确定发布路径。

于是,我们设计了一种配置,叫 roadmap.path ,负责给每个文件分配属性,而这些属性决定了fis对每个文件的处理方式。比如一个文件的 release ,那么这个文件就不会被发布,如果如果文件的 release 属性是 '/css/common.css' 那它就会被发布到这个目录下。所以,你的需求在fis中的配置为:

fis.config.set('roadmap.path', [
    {
        reg: /^\/scss\/(.*\.scss)$/,
        release: 'css/$1'
    }
]);

fis中,给文件分配属性是通过roadmap.path中的 reg 匹配来实现的,reg命中的文件路径,就把reg之外的其他属性都赋值给文件对象。

所以,上面这个配置就是命中了scss下的所有.scss后缀的文件,并且把匹配到的文件路径中scss后面的部分取出来用 $1 表示(这是正则分组,如果不了解,可以看一下js的正则表达式介绍),用这个值来设置文件的release属性

这样,fis在发布项目的时候,就知道该怎么发布文件了。接下来,如果你希望整个项目发布到d盘的output目录下作为最终发布路径,那么就执行命令:

fis release -d d:\output

然后,你的这个scss/common.scss由于配置了release属性是“css/common.css”,那么在这条命令执行后,它的实际产出路径就是 d:\output\css\common.css

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants