Angular 4+模块与scss导入共享

时间:2018-03-08 12:48:35

标签: angular import sass angular5

我处于一个有角度项目的情况。让我们称之为项目A.项目A已经完成,它有很多有用的组件,比如自己的材料组件(自己选择,自己的复选框......等等)。我这次需要创建项目B,但将来也许项目C,D,E ..即将到来。我想与他们分享材料而不发表。所以我在项目A中创建了材料模块。该模块声明并导出材料组件。在(新)项目B中我相对导入材料模块。显然是因为我想使用他的组件。不幸的是,材质组件的样式是用scss编写的。

我也在项目中使用变量。为什么不?这是scss最强大的功能之一。所以我创建了一个包含scss变量函数mixins等的全局文件。我这样导入它:

@import "~scss/_global.scss";

.material-componenet{
 color: $variableFromGlobal;
}

项目A仍然正常运作。另一方面,当我构建项目B时,它找不到“~scss / _global.scss”文件,因为它在项目B中查找它。我想避免代码重复。 (A B C D E ..在树结构中可以相互远离)

我知道这是一个特殊问题,但任何想法都会有所帮助。

感谢您的时间和答案!

1 个答案:

答案 0 :(得分:0)

有趣的问题,我假设您对所有项目使用node_modulessrc文件夹。

  1. 如果项目A是已经通过npm发布的模块,那么你可以做你做过的事情

    @import" ~project1 / scss / _global.scss"

  2. ~符号会查看node_modules

    1. 如果项目A是srcsrc之外的文件夹,则可以

      @import" ../ lib / project1 / scss / _global.scss"

    2. import了解相对链接。