Skip to content

Commit 35deb3a

Browse files
authored
Merge pull request #184 from assetgraph/feature/backToCanvas
Switch back to the canvas module, support node 11
2 parents 579a8ed + f5e8a95 commit 35deb3a

File tree

4 files changed

+24
-18
lines changed

4 files changed

+24
-18
lines changed

.travis.yml

+7-6
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
language: node_js
22
node_js:
33
- '8'
4-
- '9'
4+
- '10'
5+
- 'node'
56
cache:
67
directories:
78
- node_modules
89

9-
script: "npm run-script travis"
10-
after_success: "<coverage/lcov.info ./node_modules/coveralls/bin/coveralls.js"
10+
script: 'npm run-script travis'
11+
after_success: '<coverage/lcov.info ./node_modules/coveralls/bin/coveralls.js'
1112

1213
notifications:
1314
webhooks:
1415
urls:
1516
- https://webhooks.gitter.im/e/8480136ea087dfae1908
16-
on_success: change # options: [always|never|change] default: always
17-
on_failure: always # options: [always|never|change] default: always
18-
on_start: false # default: false
17+
on_success: change # options: [always|never|change] default: always
18+
on_failure: always # options: [always|never|change] default: always
19+
on_start: false # default: false

lib/spriteBackgroundImages.js

+15-10
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const queryString = require('querystring');
22
const { promisify } = require('util');
33
const packers = require('./packers');
4-
const { Canvas, Image } = require('canvas-prebuilt');
4+
const { Canvas, Image } = require('canvas');
55

66
// Helper for extracting all nodes defining a specific property from a postcss rule
77
function getProperties(container, propertyName) {
@@ -11,14 +11,7 @@ function getProperties(container, propertyName) {
1111
async function getCanvasImageFromImageAsset(imageAsset) {
1212
const canvasImage = new Image();
1313
await new Promise((resolve, reject) => {
14-
canvasImage.onerror = err => {
15-
if (err.message.includes('node-canvas was built without SVG support')) {
16-
err.message = 'Adding SVG images to a sprite is not possible';
17-
}
18-
19-
err.message += ` (${imageAsset.urlOrDescription})`;
20-
reject(err);
21-
};
14+
canvasImage.onerror = err => reject(err);
2215
canvasImage.onload = resolve;
2316
canvasImage.src = imageAsset.rawSrc;
2417
});
@@ -27,7 +20,19 @@ async function getCanvasImageFromImageAsset(imageAsset) {
2720

2821
async function getImageAssetFromCanvas(canvas, assetType, assetGraph) {
2922
if (assetType === 'Png') {
30-
const rawSrc = await promisify(cb => canvas.toBuffer(cb))();
23+
let rawSrc;
24+
try {
25+
rawSrc = await promisify(cb => canvas.toBuffer(cb))();
26+
} catch (err) {
27+
if (
28+
err.message.includes(
29+
'the surface type is not appropriate for the operation'
30+
)
31+
) {
32+
err.message += ' (are you trying to add an SVG to a sprite?)';
33+
}
34+
throw err;
35+
}
3136
return {
3237
type: 'Png',
3338
rawSrc

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
},
4242
"main": "lib/spriteBackgroundImages.js",
4343
"dependencies": {
44-
"canvas-prebuilt": "2.0.0-alpha.14"
44+
"canvas": "^2.3.1"
4545
},
4646
"nyc": {
4747
"include": [

test/spriteBackgroundImages.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -530,7 +530,7 @@ describe('spriteBackgroundImages', () => {
530530
await expect(
531531
assetGraph.queue(spriteBackgroundImages()),
532532
'to be rejected with',
533-
/Adding SVG images to a sprite is not possible/
533+
/are you trying to add an SVG to a sprite/
534534
);
535535
});
536536
});

0 commit comments

Comments
 (0)