在我正在使用的应用程序中,我必须在客户端上呈现之前动态编译SASS(缓存系统即将到来,不用担心).目前我正在使用node-sass,一切都很好.
这是我到目前为止所做的工作.为简洁起见,已删除其他项目特定代码:
var sass = require('node-sass'),
autoprefixer = require('autoprefixer-core'),
vars = require('postcss-simple-vars'),
postcss = require('postcss'),
function compileCSS() {
var result = sass.renderSync({
file: 'path/to/style.scss'
});
return postcss([autoprefixer]).process(result.css.toString()).css;
}
Run Code Online (Sandbox Code Playgroud)
皱纹是现在我需要从Node传递动态数据并将其编译为普通的SASS变量.最初我尝试使用PostCSS,因为我注意到它可以做变量注入.不幸的是,这不起作用.PostCSS在编译阶段开始,在这一点上惨败.
接下来,我尝试使用下划线模板尝试使用node-sass覆盖' importer():
var result = sass.renderSync({
file: 'path/to/style.scss',
importer: function(url, prev, done) {
var content = fs.readFileSync(partial_path),
partial = _.template(content.toString());
return {
contents: partial({ test: 'test' })
};
}
});
Run Code Online (Sandbox Code Playgroud)
这导致以下错误:
Error: error reading values after :
Run Code Online (Sandbox Code Playgroud)
显然,SASS不喜欢下划线的变量语法.
如何从我的Node应用程序中将动态变量传递给SASS?
我最近在Mocha的帮助下开始进行Node项目的单元测试.到目前为止事情进展顺利,我发现我的代码已经有了很大的改进,因为我正在考虑在我的测试中涵盖的所有角度.
现在,我想与我的团队其他成员分享我的经验,并让他们自己进行测试.我想分享的部分信息是我的代码实际涵盖了多少.
下面是我的应用程序结构示例,我将其分成不同的组件或模块.为了促进重用,我试图将所有依赖项保持在最低限度并与组件文件夹隔离.这包括保持测试隔离,而不是test/项目根目录中的默认文件夹.
| app/
| - component/
| -- index.js
| -- test/
| ---- index.js
Run Code Online (Sandbox Code Playgroud)
目前我package.json看起来像这样.我正在和伊斯坦布尔一起玩,但我与之无关.我也尝试过使用Blanket,取得了类似的成功.
{
"scripts": {
"test": "clear && mocha app/ app/**/test/*.js",
"test-cov": "clear && istanbul cover npm test"
}
Run Code Online (Sandbox Code Playgroud)
如果我test-cov按原样运行我的命令,我从伊斯坦布尔得到以下错误(这没有帮助):
No coverage information was collected, exit without writing coverage information
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:鉴于我目前的应用程序结构和环境,如何使用Istanbul(或其他工具)正确报告我的代码覆盖率?
如何使用Node,Mocha和我当前的应用程序结构报告我的代码覆盖率?
需要说明的是,Mocha正在当前状态下正确运行测试.获取代码覆盖率报告是我努力工作的原因.
我收到通知,其他问题可能已经回答了我的问题.它只建议安装伊斯坦布尔并运行cover我已经完成的命令.另一个建议建议运行测试命令_mocha,我从一些研究中做的是阻止伊斯坦布尔吞下摩卡的标志,在新版本的摩卡中不是必需的.