diff --git a/.gitignore b/.gitignore
index 46c912c..a84175b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,4 @@
# NODEJS
node_modules
npm-debug.log
+.nyc_output
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..156f12b
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,9 @@
+sudo: false
+language: node_js
+node_js:
+ - "node"
+ - "lts/*"
+ - "8"
+
+after_script:
+ - npm run coverage
diff --git a/index.js b/index.js
index 557853e..372adb7 100644
--- a/index.js
+++ b/index.js
@@ -10,7 +10,12 @@ module.exports = function posthtmlStyleToFile(options) {
tree.match({ tag: 'style' }, function(node) {
buf += node.content[0].trim() || '';
- return node;
+
+ if (options.removeStyle === 'tag' || options.removeStyle === 'all') {
+ return '';
+ }
+
+ return node;
});
tree.match({ attrs: { style: true }}, function(node) {
@@ -22,6 +27,11 @@ module.exports = function posthtmlStyleToFile(options) {
node.tag +
(node.attrs.id? ('#' + node.attrs.id ): '') +
cls + '{' + node.attrs.style + '}';
+
+ if (options.removeStyle === 'attrs' || options.removeStyle === 'all') {
+ delete node.attrs.style;
+ }
+
return node;
});
diff --git a/package.json b/package.json
index 7c7295d..7052e46 100644
--- a/package.json
+++ b/package.json
@@ -1,19 +1,21 @@
{
"name": "posthtml-style-to-file",
- "version": "0.1.1",
+ "version": "0.2.0",
"description": "posthtml style-to-file plugin",
"main": "index.js",
- "dependencies": {
- },
+ "dependencies": {},
"devDependencies": {
- "chai": "^3.2.0",
- "jscs": "^1.13.1",
+ "chai": "^4.2.0",
+ "coveralls": "^3.0.4",
+ "jscs": "^3.0.7",
"jshint": "^2.8.0",
- "posthtml": "^0.3.0",
- "mocha": "^2.2.5"
+ "mocha": "^6.1.4",
+ "nyc": "^14.1.1",
+ "posthtml": "^0.11.4"
},
"scripts": {
- "test": "npm run lint && mocha",
+ "coverage": "nyc report --reporter=text-lcov | coveralls",
+ "test": "npm run lint && nyc mocha",
"lint": "jshint . && jscs . -v"
},
"repository": {
diff --git a/readme.md b/readme.md
index b7d84b9..a694fda 100644
--- a/readme.md
+++ b/readme.md
@@ -18,9 +18,21 @@ npm i -D posthtml-style-to-file
Usage
-### Options
+## Options
-__`path`__
+#### `path`
+
+Type: `String`
+Default: `./result.css`
+Description: *Destination path, where the extracted CSS is saved to.*
+
+#### `removeStyle`
+
+Type: `String`
+Default: ``
+Description: *Removes the specified value `attrs` | `tag` | `all`*
+
+__`removeStyle`__
Destination path, where the extracted CSS is saved to.
diff --git a/test/test.js b/test/test.js
index ccc6548..618aac9 100644
--- a/test/test.js
+++ b/test/test.js
@@ -4,30 +4,88 @@ var plugin = require('..');
var expect = require('chai').expect;
var fs = require('fs');
-var HTML = fs.readFileSync('./test/test.html', 'utf-8'),
- CSS = fs.readFileSync('./test/test.css', 'utf-8');
+var HTML = fs.readFileSync('./test/test.html', 'utf-8');
+var CSS = fs.readFileSync('./test/test.css', 'utf-8');
-function test(html, referenceCss, done) {
+function test(html, options, callbackSuccess, callbackError) {
posthtml()
- .use(plugin({ path: './test/test2.css' }))
+ .use(plugin(options))
.process(html)
- .then(function(/*result*/) {
- setTimeout(function() {
- expect(referenceCss).to.eql(fs.readFileSync('./test/test2.css', 'utf-8').toString());
- done();
- }, 20);
- }).catch(function(error) {
- done(error);
- });
+ .then(callbackSuccess)
+ .catch(callbackError);
}
describe('Simple test', function() {
it('style to file', function(done) {
test(
HTML,
- CSS,
- done
+ { path: './test/test2.css' },
+ function() {
+ setTimeout(function() {
+ expect(CSS).to.eql(fs.readFileSync('./test/test2.css', 'utf-8').toString());
+ done();
+ }, 20);
+ },
+ function(error) {
+ done(error);
+ }
);
});
+ it('remove style attrs', function(done) {
+ test(
+ HTML,
+ {
+ path: './test/test2.css',
+ removeStyle: 'attrs'
+ },
+ function(result) {
+ setTimeout(function() {
+ expect(result.html).to.eql(fs.readFileSync('./test/testRemoveAttrs.html', 'utf-8').toString());
+ done();
+ }, 20);
+ },
+ function(error) {
+ done(error);
+ }
+ );
+ });
+
+ it('remove style tag', function(done) {
+ test(
+ HTML,
+ {
+ path: './test/test2.css',
+ removeStyle: 'tag'
+ },
+ function(result) {
+ setTimeout(function() {
+ expect(result.html).to.eql(fs.readFileSync('./test/testRemoveTag.html', 'utf-8').toString());
+ done();
+ }, 20);
+ },
+ function(error) {
+ done(error);
+ }
+ );
+ });
+
+ it('remove style all', function(done) {
+ test(
+ HTML,
+ {
+ path: './test/test2.css',
+ removeStyle: 'all'
+ },
+ function(result) {
+ setTimeout(function() {
+ expect(result.html).to.eql(fs.readFileSync('./test/testRemoveAll.html', 'utf-8').toString());
+ done();
+ }, 20);
+ },
+ function(error) {
+ done(error);
+ }
+ );
+ });
});
diff --git a/test/testRemoveAll.html b/test/testRemoveAll.html
new file mode 100644
index 0000000..4711247
--- /dev/null
+++ b/test/testRemoveAll.html
@@ -0,0 +1,15 @@
+
+
+ Wow
+
+
+
+
+
+
diff --git a/test/testRemoveAttrs.html b/test/testRemoveAttrs.html
new file mode 100644
index 0000000..38cb66b
--- /dev/null
+++ b/test/testRemoveAttrs.html
@@ -0,0 +1,17 @@
+
+
+ Wow
+
+
+
+
+
+
diff --git a/test/testRemoveTag.html b/test/testRemoveTag.html
new file mode 100644
index 0000000..49d731c
--- /dev/null
+++ b/test/testRemoveTag.html
@@ -0,0 +1,15 @@
+
+
+ Wow
+
+
+
+
+
+