我已经安装在我的Mac的node.js /笔/笔尖,我可以手动编译.styl
文件.css
在命令行上。 我也知道有这个stylus.middleware()
的东西,不断来临,当我搜索如何设置自动编译时的.styl
的变化,但是我不知道我是多么应该实现它(我从来没有使用节点.js文件之前)。
是什么文件我把这些代码吗?
我该如何开始这个代码,因此它始终运行?
我觉得我缺少的节点侧的几件事情,以便能够进行此设置。
我已经安装在我的Mac的node.js /笔/笔尖,我可以手动编译.styl
文件.css
在命令行上。 我也知道有这个stylus.middleware()
的东西,不断来临,当我搜索如何设置自动编译时的.styl
的变化,但是我不知道我是多么应该实现它(我从来没有使用节点.js文件之前)。
是什么文件我把这些代码吗?
我该如何开始这个代码,因此它始终运行?
我觉得我缺少的节点侧的几件事情,以便能够进行此设置。
在命令行中,你可以使用:
stylus -w folder/
或只是另一个例子:
stylus -w styl/*.styl -o css/
它会监视更改和编译该文件夹下的所有活* .styl文件。
如果您安装了stylus
作为全球封装( npm install stylus -g
)你有你的系统上的手写笔二进制文件。
$ stylus -h
Usage: stylus [options] [command] [< in [> out]]
[file|dir ...]
Commands:
help [<type>:]<prop> Opens help info at MDC for <prop> in
your default browser. Optionally
searches other resources of <type>:
safari opera w3c ms caniuse quirksmode
Options:
-i, --interactive Start interactive REPL
-u, --use <path> Utilize the stylus plugin at <path>
-U, --inline Utilize image inlining via data uri support
-w, --watch Watch file(s) for changes and re-compile
-o, --out <dir> Output to <dir> when passing files
-C, --css <src> [dest] Convert css input to stylus
-I, --include <path> Add <path> to lookup paths
-c, --compress Compress css output
-d, --compare Display input along with output
-f, --firebug Emits debug infos in the generated css that
can be used by the FireStylus Firebug plugin
-l, --line-numbers Emits comments in the generated css
indicating the corresponding stylus line
--include-css Include regular css on @import
-V, --version Display the version of stylus
-h, --help Display help information
此简要介绍一些基本的节点。
0.1组织代码。 它是把你的主节点的应用代码到一个名为公约app.js
在项目的根。
内部app.js东西分为两个通用零部件:
1.编译手写笔CSS当你构建应用程序。 我们需要需要手写笔模块。 通常,这是在app.js的顶部做依赖关系保持在一起。
var stylus = require('stylus');
该节点第一次运行时app.js
,你需要这个JS模块来构建你的CSS。 这是基本的想法:
stylus.render(stylus-code-string, function(err, css) {
if (err) throw err;
console.log(css);
});
下面是官方的Stylus Javascript API第 。
要使用节点的电源,你应该使用读笔文件FS模块到缓冲区中,然后将其转换为字符串,并最终将其传递给stylus.render()
然后,将结果发送到目标文件。 由于这是构建过程的一部分,也可以是同步的。 但是,这是不是真的你的问题...
用手写笔2.自动编译CSS作为后台进程。
这个函数产生一个child_process会监视单个.styl
文件和所包含的编译.styl
文件转换成一个.css
文件。 你并不需要为这个模块,只有这样,它运行在命令行安装手写笔可执行文件。 (你已经这样做了)。 这个例子是用铁笔版本0.5.0制作。 此外,该文件夹的路径,您使用(例如: build/styles
和styles
)有存在的必要。
function watchStyles(sourcefile, destinationfolder) {
var Stylus = child_process.spawn('stylus', ['--sourcemap', '-w', sourcefile, '--out', destinationfolder]);
Stylus.stdout.pipe(process.stdout); // notifications: watching, compiled, generated.
Stylus.stderr.pipe(process.stdout); // warnings: ParseError.
Stylus.on('error', function(err) {
console.log("Stylus process("+Stylus.pid+") error: "+err);
console.log(err);
});
// Report unclean exit.
Stylus.on('close', function (code) {
if (code !== 0) {
console.log("Stylus process("+Stylus.pid+") exited with code " + code);
}
});
}
接下来,你需要在开始您的应用程序后的某个时候调用这个函数。 通过在你的主人.styl
文件作为来源。 然后,您希望您的CSS要去的目的地的目录。
// check that you passed '-w' parameter
if (process.argv[2] && (process.argv[2] == "-w")) {
watchStyles('styles/app.styl', 'build/styles');
}
通过运行启动应用程序: $ node app.js -w
它有助于组织你的.styl
下一个文件app.styl
让你的内容app.styl
看起来是这样的:
@import 'layout'
@import 'header'
@import 'main'
@import 'footer'
@import 'modal'
@import 'overrides'
** 我会在这里结束昨天并没有找到正确的答案。 所以这个跟进的是为别人谁遵循相同的路径我... **
我有一个问题设置手写笔命令行太多。 我一直在试图安装stylus
全球
$ npm install -g stylus
并会出现错误。 我是有一个项目正在与grunt-contrib-stylus
,而是通过命令行我没有得到任何工作。
即使$stylus --version
没有任何回报。 我尝试更新npm
就坏了npm
,所以我最终重新安装node
重新安装npm
。 然后,我能够做一个新安装的$ sudo npm install -g stylus
,并能得到--version
。
我也不得不重新安装grunt
和其他一切我已经通过全球的装机npm
...
首先,安装手写笔本地npm install stylus --save-dev
,如果你没有。
创建构建您的样式表,每当改变在主笔文件中检测重建启动脚本:
startup.js
var fs = require('fs')
var stylus = require('stylus')
// Define input filename and output filename
var styleInput = __dirname + '/dev/stylus/main.styl'
var styleOutputFilename = 'main.css'
var styleOutput = __dirname + '/static/' + styleOutputFilename
var stylusPaths = [__dirname + '/dev/stylus', __dirname + '/dev/stylus/libs']
// Build stylesheet on first execute
buildStyles(styleInput, styleOutput, stylusPaths)
// Watch stylus file for changes.
fs.watch(styleInput, function(eventType, filename) {
if (filename) {
buildStyles(styleInput, styleOutput, stylusPaths)
} else {
console.log('no filename found. probably platform doesnt support it.');
}
});
function buildStyles(input, output, paths) {
stylus(fs.readFileSync(input, 'utf-8'))
.set('paths', paths)
.set('include css', true)
.set('watch', true)
.render(function(err, css) {
if (err) throw err;
fs.writeFile(output, css, (err) => {
if (err) throw err;
console.log('