手写笔重新编译与Ember-cli不一致

时间:2014-09-29 00:36:13

标签: css node.js ember.js ember-cli stylus

我试图将Stylus纳入基于Ember-cli的项目中。 On' ember s'手写笔正在根据需要编译app.styl和所有导入的样式表,但是在接收更改时,运行将经常失败并且不一致地重新编译。

版本;

  • Ember-cli 0.0.46
  • 节点0.10.32
  • NPM 1.5.0-alpha-4

应用/风格/ app.styl;

@import "reset";
@import "config";
@import "site-header";
@import "site-footer";
@import "login-bar";

body {
  color: white;
}

每个导入的样式文件也位于' app / styles /'文件夹中。

的package.json;

"devDependencies": {
  "body-parser": "^1.2.0",
  "broccoli-asset-rev": "0.1.1",
  "broccoli-ember-hbs-template-compiler": "^1.6.1",
  "broccoli-merge-trees": "^0.1.4",
  "broccoli-stylus-single": "~0.3.0",
  "ember-cli": "0.0.46",
  "ember-cli-ic-ajax": "0.1.1",
  "ember-cli-inject-live-reload": "^1.0.2",
  "ember-cli-qunit": "0.1.0",
  "ember-data": "1.0.0-beta.10",
  "express": "^4.8.5",
  "glob": "^4.0.5"
}

如果我对ap​​p.styl进行更改,Ember-cli会识别出这一点,请相应地重新构建和更新asset / project_name.css文件。但是,如果对导入的app.styl子项进行更改(例如" site-footer",Ember-cli将不一致地重新构建并按预期更新.css。它通常适用于第一次尝试然后忽略此后的所有进一步变化(对任何儿童风格)。

唯一的解决方案是终止并重新运行“#ember s'。

其他信息

我试图通过改变默认值来强制在Brocfile.js中重新编译...

// Ember
var EmberApp = require('ember-cli/lib/broccoli/ember-app');
var app = new EmberApp();

module.exports = app.toTree();

..以下......

// Ember
var EmberApp = require('ember-cli/lib/broccoli/ember-app');
var app = new EmberApp();

// Stylus
var mergeTrees = require('broccoli-merge-trees');
var compiledStylus = require('broccoli-stylus-single');
var stylus = compiledStylus(['app/styles'], 'app.styl', 'assets/project_name.css', {
  'include css': true,
  'compress': true,
});

module.exports = mergeTrees([app.toTree(), stylus], { overwrite: true });

..只会导致相同的问题重复自身,找到文件更改两次,但会产生相同的问题。

1 个答案:

答案 0 :(得分:0)

问题出在Stylus缓存上,通过对...进行更改来修复。

node_modules / broccoli-stylus-single / index.js(第35行);

var stylusOptions = {
  filename: includePathSearcher.findFileSync(self.inputFile, includePaths),
  paths: includePaths,
  cache: false,
}

或者可以通过brocfile中的options参数手动修复。