Skip to content

Commit 76dcf16

Browse files
committed
Merge pull request #10 from angryobject/addDependencyTo
addDependencyTo option
2 parents 5c4cd60 + 3a1b982 commit 76dcf16

3 files changed

Lines changed: 36 additions & 1 deletion

File tree

README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,3 +45,13 @@ posthtml()
4545
__root__: Root folder path for include. Default `./`
4646

4747
__encoding__: Default `utf-8`
48+
49+
__addDependencyTo__: An object with addDependency() method, taking file path as an argument. Called whenever a file is included. Default `null`. You can use it for hot-reloading in webpack posthtml-loader like this:
50+
51+
```javascript
52+
posthtml: function(webpack) {
53+
return [
54+
require('posthtml-include')({ addDependencyTo: webpack })
55+
]
56+
}
57+
```

index.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,15 @@ module.exports = function(options) {
1111
tree.match({ tag: 'include' }, function(node) {
1212
var src = node.attrs.src || false,
1313
content;
14-
if (src) content = parser(fs.readFileSync(path.resolve(options.root, src), options.encoding));
14+
if (src) {
15+
src = path.resolve(options.root, src);
16+
content = parser(fs.readFileSync(src, options.encoding));
17+
18+
if (typeof options.addDependencyTo === 'object' &&
19+
typeof options.addDependencyTo.addDependency === 'function') {
20+
options.addDependencyTo.addDependency(src);
21+
}
22+
}
1523
return {
1624
tag: false,
1725
content: content

test/test.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,21 @@ describe('Simple test', function() {
3333
done
3434
);
3535
});
36+
37+
it('addDependencyTo option', function(done) {
38+
var includePath = require('path').resolve('./test/blocks/button/button.html');
39+
40+
function test(filePath) {
41+
try {
42+
expect(filePath).to.eql(includePath);
43+
done();
44+
} catch(err) {
45+
done(err);
46+
}
47+
}
48+
49+
posthtml()
50+
.use(plugin({ addDependencyTo: { addDependency: test }}))
51+
.process('<include src="./test/blocks/button/button.html">');
52+
});
3653
});

0 commit comments

Comments
 (0)