在包之间共享手写笔表

Mat*_*t K 7 meteor

我有一个应用程序分成几个包.这些包中的每一个都有自己的.styl表来设置特定包提供的组件的样式.目前,这些.styl床单都依赖于相同的功能,混入,并在声明的变量variables.import.styl即是在./client/styles文件夹中.我这样做是因为如果改变errorRed颜色variables.import.styl,它会改变所有包装的颜色.

要访问这些变量,在每个包的样式表的顶部,我有一个@import "./client/styles/variables.import".或者,我可以为手写笔变量创建一个单独的包,然后使该包成为所有其他包中的依赖项.我不喜欢这两种选择,但我认为这是我为保持样式表被包装分开而付出的代价.谁有更优雅的选择?

值得注意的是,在Meteor devel分支上,我以前的解决方案不再有效(手写笔无法看到包根目录上方的文件夹).无论在下一版本发布之前是否修复,我都知道必须有一个更清洁的解决方案.

sai*_*unt 0

从 Meteor 1.2 开始,对于手写笔和 less 样式表来说,这是一个开箱即用的功能。

https://github.com/meteor/meteor/tree/devel/packages/stylus#cross-packages-imports

在您的package.js Package.onUse部分中,用于api.addFiles声明此包提供的手写笔表:

api.addFiles('styles/package-sheet.styl', 'client', {isImport: true});
Run Code Online (Sandbox Code Playgroud)

注意到这个isImport: true选项了吗?

然后在您的主应用程序主手写笔样式表中,您可以使用以下语法导入特定的包(假设它名为my-username:mypackage)表:

@import '{my-username:my-package}/styles/package-sheet.styl'
Run Code Online (Sandbox Code Playgroud)

请注意,要在应用程序中导入工作表,您还需要使用此新语法,而不需要任何包名称:

@import '{}/client/styles/app-sheet.styl'
Run Code Online (Sandbox Code Playgroud)

以前的语法将不再起作用!

// the Meteor build tool will complain about not finding the sheet
@import 'client/styles/app-sheet.styl'
Run Code Online (Sandbox Code Playgroud)