Skip to content
This repository was archived by the owner on Dec 26, 2018. It is now read-only.

Commit 96dd31c

Browse files
committed
relative import path & dependency support for stylus
1 parent b90ffef commit 96dd31c

File tree

7 files changed

+45
-13
lines changed

7 files changed

+45
-13
lines changed

lib/compilers/stylus.js

+21-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,29 @@
11
var options = require('./options')
2+
var assign = require('object-assign')
3+
var path = require('path')
24

3-
module.exports = function (raw, cb) {
5+
module.exports = function (raw, cb, compiler, filePath) {
46
try {
57
var stylus = require('stylus')
68
} catch (err) {
79
return cb(err)
810
}
9-
stylus.render(raw, options.stylus || {}, cb)
11+
12+
var dir = path.dirname(filePath)
13+
var paths = [dir, process.cwd()]
14+
paths = options.stylus && options.stylus.paths
15+
? options.stylus.paths.concat(paths)
16+
: paths
17+
18+
var renderer = stylus(raw)
19+
.set('filename', path.basename(filePath))
20+
.set('paths', paths)
21+
22+
renderer.render(function (err, css) {
23+
if (err) return cb(err)
24+
renderer.deps().forEach(function (file) {
25+
compiler.emit('dependency', file)
26+
})
27+
cb(null, css)
28+
})
1029
}

test/expects/styl.js

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
var __vueify_style__ = require("vueify-insert-css").insert("body{font:100% Helvetica,sans-serif;color:#333}")
File renamed without changes.

test/fixtures/imports/import.styl

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
$font-stack = Helvetica, sans-serif;
2+
$primary-color = #333

test/fixtures/sass.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<style lang="sass">
2-
@import './imports/import.scss';
2+
@import './imports/import.sass';
33
44
body {
55
font: 100% $font-stack;

test/fixtures/styl.vue

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<style lang="stylus">
2+
@import './imports/import.styl'
3+
4+
body
5+
font 100% $font-stack
6+
color $primary-color
7+
</style>

test/test.js

+13-10
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,12 @@ function test (name) {
2525
var expected = read('expects/' + name + '.js')
2626
.replace(/\{\{id\}\}/g, '_v-' + hash(require.resolve('./' + filePath)))
2727

28-
// test src imports registering dependency
29-
var addDep
30-
var deps
31-
if (name === 'src') {
32-
deps = []
33-
addDep = function (file) {
34-
deps.push(file)
35-
}
36-
compiler.on('dependency', addDep)
28+
// test registering dependency
29+
var deps = []
30+
function addDep (file) {
31+
deps.push(file)
3732
}
33+
compiler.on('dependency', addDep)
3834

3935
process.env.VUEIFY_TEST = true
4036
process.env.NODE_ENV = name === 'non-minified'
@@ -51,12 +47,19 @@ function test (name) {
5147
setTimeout(function () {
5248
if (err) throw err
5349
assert.equal(result, expected, 'should compile correctly')
50+
51+
// check src
5452
if (name === 'src') {
55-
compiler.removeListener('dependency', addDep)
5653
assert.equal(deps[0], __dirname + '/fixtures/test.html')
5754
assert.equal(deps[1], __dirname + '/fixtures/test.styl')
5855
assert.equal(deps[2], __dirname + '/fixtures/src/test.js')
5956
}
57+
58+
if (name === 'less' || name === 'sass' || name === 'styl') {
59+
assert.equal(deps[0], __dirname + '/fixtures/imports/import.' + name)
60+
}
61+
62+
compiler.removeListener('dependency', addDep)
6063
done()
6164
}, 0)
6265
}

0 commit comments

Comments
 (0)