tea3 / hexo-generator-amp Goto Github PK
View Code? Open in Web Editor NEWAMP ⚡ HTML (Accelerated Mobile Pages) generator for Hexo.
License: MIT License
AMP ⚡ HTML (Accelerated Mobile Pages) generator for Hexo.
License: MIT License
gist tag is not displayed.
Could you add a gist filter?
https://www.ampproject.org/docs/reference/components/amp-gist
As the question says, can it create AMP html for index page?
I see that there are some interesting words used,
as object key,
isCasheUpdate
isCasheClear
and as file name,
write-cashe.js
Are they named cashe
not cache
on purpose? :)
Thanks!
I want to install amp in my blog (use swig view template engine)
What should I do?
<% if (is_post() && config.generator_amp){ %>
'<link rel="amphtml" href="./amp/index.html"'
<% } %>
please help me :(
For example,
It will convert this code in normal pages so that normal pages' image won't work.
And it seems it can't be seperate for CDN images. Such as in the normal pages it use website image's address "google.com/1.jpg" and in the AMP it uses local image's address "/images/1.jpg"
There is no way to specify the generated amp files' path, and this may lead to problem sometimes.
FATAL ENOTDIR: not a directory, mkdir '/Users/TooBug/xxx/public/article/post-title.html/amp'
My blog for example:
Hexo generate the blog post html file in a individual folder in general, maybe post-title/index.html
, thus the url might be http://localhost:4000/post/post-title/
. But it's possible to modify the default path of generated blog posts by permalink
config. For backwards compatible, I changed this config to
permalink: article/:title.html
Then the generated path would be something like post-title.html
, there is no folder here. But the amp plugin still tries to write amp files to post-title.html/amp/index.html
, this lead to the error.
Hope there would be a config to specify the path of generated amp files.
Because use static pages, not set httpserver (such as nginx/apache etc.) .
var url = window.location.href;
if (url.indexOf("https") < 0) {
url = url.replace("http:", "https:");
window.location.replace(url);
}
When I run hexo g, plugins will make mistakes.
-> _posts/nofollow-301.md
[17:31:38.027] [hexo-generator-amp] error: Error: unable to verify the first certificate
This plugin checks whether the image URL exists.
img path: https://obbuo9upd.qnssl.com/20160304201650.jpg
Please check the following file.
-> _posts/where-is-community.md
[17:31:38.027] [hexo-generator-amp] error: This plugin can not acquire the width and height of such url images. Please change the URL to HTTP or HTTPS, or add height and width.
img path: https://obbuo9upd.qnssl.com/20160304201650.jpg
Please check the following file.
Because the pictures in my article are all stored on the drawing bed, so plug-ins can't be detected, can you skip this detection process, thank you.
When I run the npm audit
on my hexo project, I got the following information:
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ High │ Arbitrary File Overwrite │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ tar │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=4.4.2 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ hexo-generator-amp │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ hexo-generator-amp > node-sass > node-gyp > tar │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://npmjs.com/advisories/803 │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Low │ Regular Expression Denial of Service │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ braces │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=2.3.1 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ hexo-generator-amp │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ hexo-generator-amp > hexo-fs > chokidar > anymatch > │
│ │ micromatch > braces │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://npmjs.com/advisories/786 │
└───────────────┴──────────────────────────────────────────────────────────────┘
OS version
Node version(node -v
)
v10.15.3
Plugin version(npm ls --depth 0
)
[email protected] ~/sanori.github.io
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
└── [email protected]
I'm starting a hexo blog and followed the installation instructions.
I copied the following into the __config.yml.
generator_amp:
templateDir: amp-template
assetDistDir: amp-dist
logo:
path: sample/sample-logo.png
width: 600
height: 60
substituteTitleImage:
path: sample/sample-substituteTitleImage.png
width: 1024
height: 800
warningLog: false # If you want to validate, please set true.
Then if I run hexo generate
, I get an error.
ERROR Plugin load failed: hexo-generator-amp
I'm running Windowx 10 x64 using node v6.9.4.
Any help would be appreciated!
It would be a good idea to allow the user to override the substituteTitleImage on a per post basis.
hi, @tea3
Thanks for your plugin. successfully generated amp for my site.
i tried two configurations setting permalink in site _config.yml not theme _config.yml, with different output:
a / must set after the permalink, otherwise, www.xxx.site/category/:abbrlink.html/amp/ will show 404 not found.
another question, This plugin generated the AMP HTML. Output file path is ./your-posts-parmalink/amp/, is it possible to customize the output path? such as www.xxx.site/amp/category/:abbrlink.html ?
thanks.
Can we set by default something more useful for latin and cyrillc?
Could simply default to responsive:
<amp-img src="/<%= config.generator_amp.logo.path %>" width="<%= config.generator_amp.logo.width %>" height="<%= config.generator_amp.logo.height %>" layout="responsive">
OR
could add this as a configuration. #9
None of my local images are linked from the generated content and an error is emitted during generation: "This plugin can not acquire the width and height of such url images. Please change the URL to HTTP or HTTPS, or add height and width."
I think I might be misunderstanding how this code works, but I was looking at this line here:
hexo-generator-amp/lib/imageSize.js
Line 27 in ef879d2
![Image description](localimage.jpg)
If so, would that explain why none of my images are replaced with amp equivalents?
I'm using https://github.com/tufu9441/maupassant-hexo for a template. Can you convert below to jade equivalent.
<% if (is_post() && config.generator_amp){ %>
<link rel="amphtml" href="./amp/index.html">
<% } %>
npm audit
of hexo directory is as follows: === npm audit security report ===
┌──────────────────────────────────────────────────────────────────────────────┐
│ Manual Review │
│ Some vulnerabilities require your attention to resolve │
│ │
│ Visit https://go.npm.me/audit-guide for additional guidance │
└──────────────────────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Moderate │ Inefficient Regular Expression Complexity in │
│ │ chalk/ansi-regex │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ ansi-regex │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=5.0.1 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ hexo-generator-amp │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ hexo-generator-amp > node-sass > npmlog > gauge > wide-align │
│ │ > string-width > strip-ansi > ansi-regex │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://github.com/advisories/GHSA-93q8-gq69-wqmw │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Moderate │ Inefficient Regular Expression Complexity in │
│ │ chalk/ansi-regex │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ ansi-regex │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=5.0.1 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ hexo-generator-amp │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ hexo-generator-amp > node-sass > node-gyp > npmlog > gauge > │
│ │ wide-align > string-width > strip-ansi > ansi-regex │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://github.com/advisories/GHSA-93q8-gq69-wqmw │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Moderate │ Inefficient Regular Expression Complexity in │
│ │ chalk/ansi-regex │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ ansi-regex │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=5.0.1 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ hexo-generator-amp │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ hexo-generator-amp > node-sass > sass-graph > yargs > │
│ │ string-width > strip-ansi > ansi-regex │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://github.com/advisories/GHSA-93q8-gq69-wqmw │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Moderate │ Inefficient Regular Expression Complexity in │
│ │ chalk/ansi-regex │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ ansi-regex │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=5.0.1 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ hexo-generator-amp │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ hexo-generator-amp > node-sass > sass-graph > yargs > cliui │
│ │ > string-width > strip-ansi > ansi-regex │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://github.com/advisories/GHSA-93q8-gq69-wqmw │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Moderate │ Inefficient Regular Expression Complexity in │
│ │ chalk/ansi-regex │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ ansi-regex │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=5.0.1 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ hexo-generator-amp │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ hexo-generator-amp > node-sass > sass-graph > yargs > cliui │
│ │ > wrap-ansi > string-width > strip-ansi > ansi-regex │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://github.com/advisories/GHSA-93q8-gq69-wqmw │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ High │ Prototype Pollution in set-value │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ set-value │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=4.0.1 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ hexo-generator-amp │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ hexo-generator-amp > hexo-fs > chokidar > braces > │
│ │ snapdragon > base > cache-base > set-value │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://github.com/advisories/GHSA-4jqc-8m5r-9rpr │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ High │ Prototype Pollution in set-value │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ set-value │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=4.0.1 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ hexo-generator-amp │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ hexo-generator-amp > hexo-fs > chokidar > anymatch > │
│ │ micromatch > snapdragon > base > cache-base > set-value │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://github.com/advisories/GHSA-4jqc-8m5r-9rpr │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ High │ Prototype Pollution in set-value │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ set-value │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=4.0.1 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ hexo-generator-amp │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ hexo-generator-amp > hexo-fs > chokidar > anymatch > │
│ │ micromatch > braces > snapdragon > base > cache-base > │
│ │ set-value │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://github.com/advisories/GHSA-4jqc-8m5r-9rpr │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ High │ Prototype Pollution in set-value │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ set-value │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=4.0.1 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ hexo-generator-amp │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ hexo-generator-amp > hexo-fs > chokidar > anymatch > │
│ │ micromatch > extglob > expand-brackets > snapdragon > base > │
│ │ cache-base > set-value │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://github.com/advisories/GHSA-4jqc-8m5r-9rpr │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ High │ Prototype Pollution in set-value │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ set-value │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=4.0.1 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ hexo-generator-amp │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ hexo-generator-amp > hexo-fs > chokidar > anymatch > │
│ │ micromatch > extglob > expand-brackets > snapdragon > base > │
│ │ cache-base > union-value > set-value │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://github.com/advisories/GHSA-4jqc-8m5r-9rpr │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ High │ Arbitrary File Creation/Overwrite on Windows via │
│ │ insufficient relative path sanitization │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ tar │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=4.4.18 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ hexo-generator-amp │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ hexo-generator-amp > node-sass > node-gyp > tar │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://github.com/advisories/GHSA-5955-9wpr-37jh │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ High │ Arbitrary File Creation/Overwrite via insufficient symlink │
│ │ protection due to directory cache poisoning using symbolic │
│ │ links │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ tar │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=4.4.18 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ hexo-generator-amp │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ hexo-generator-amp > node-sass > node-gyp > tar │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://github.com/advisories/GHSA-qq89-hq3f-393p │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ High │ Arbitrary File Creation/Overwrite via insufficient symlink │
│ │ protection due to directory cache poisoning using symbolic │
│ │ links │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ tar │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=4.4.16 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ hexo-generator-amp │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ hexo-generator-amp > node-sass > node-gyp > tar │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://github.com/advisories/GHSA-9r2w-394v-53qc │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ High │ Arbitrary File Creation/Overwrite due to insufficient │
│ │ absolute path sanitization │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ tar │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=3.2.2 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ hexo-generator-amp │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ hexo-generator-amp > node-sass > node-gyp > tar │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://github.com/advisories/GHSA-3jfq-g458-7qm9 │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ High │ Arbitrary File Creation/Overwrite via insufficient symlink │
│ │ protection due to directory cache poisoning │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ tar │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=3.2.3 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ hexo-generator-amp │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ hexo-generator-amp > node-sass > node-gyp > tar │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://github.com/advisories/GHSA-r628-mhmh-qjhw │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Moderate │ Passing in a non-string 'html' argument can lead to │
│ │ unsanitized output │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ striptags │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=3.2.0 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ hexo-generator-amp │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ hexo-generator-amp > hexo-util > striptags │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://github.com/advisories/GHSA-qxg5-2qff-p49r │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ High │ Regular Expression Denial of Service in trim-newlines │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ trim-newlines │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=3.0.1 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ hexo-generator-amp │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ hexo-generator-amp > node-sass > meow > trim-newlines │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://github.com/advisories/GHSA-7p7h-4mm5-852v │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ High │ Regular expression denial of service │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ glob-parent │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=5.1.2 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ hexo-generator-amp │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ hexo-generator-amp > hexo-fs > chokidar > glob-parent │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://github.com/advisories/GHSA-ww39-953v-wcq6 │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ High │ Remote code execution via the `pretty` option. │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ pug │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=3.0.1 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ hexo-generator-amp │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ hexo-generator-amp > pug │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://github.com/advisories/GHSA-p493-635q-r6gr │
└───────────────┴──────────────────────────────────────────────────────────────┘
┌───────────────┬──────────────────────────────────────────────────────────────┐
│ Moderate │ ReDOS vulnerabities: multiple grammars │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Package │ highlight.js │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Patched in │ >=10.4.1 │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Dependency of │ hexo-generator-amp │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ Path │ hexo-generator-amp > hexo-util > highlight.js │
├───────────────┼──────────────────────────────────────────────────────────────┤
│ More info │ https://github.com/advisories/GHSA-7wwv-vh3v-89cq │
└───────────────┴──────────────────────────────────────────────────────────────┘
found 20 vulnerabilities (7 moderate, 13 high) in 742 scanned packages
20 vulnerabilities require manual review. See the full report for details.
OS version
Node version(node -v
)
v12.22.7
Plugin version(npm ls --depth 0
)
[email protected] ~/Workspace/sanori.github.io
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
└── [email protected]
Please include ejs with the plugin.
ERROR Plugin load failed: hexo-generator-amp
Error: Cannot find module 'ejs'
I managed to correctly create amp pages with a pug template using hexo-generator-amp for source/ posts/...
but not for source/pages
. Is this expected behaviour or have mis-configured something ?
THank you for your help. My question might be a duplicate of #21. Sorry if it's the case.
In https://github.com/tea3/hexo-generator-amp/wiki/More-Settings#front-matter-option
you said that someone can designate the image of BlogPosting by setting ampSettings.titleImage.path.
the path seems to be relative to the resource directory of each post.
If I want to designate common images, such as different by posting categories, not each post,
how can I point the image?
Is the only way to copy same image to same post resource directory?
currently the configuration seems to use three different relative paths:
Item 2. above is probably the most troublesome.
The process is documented here:
It would be great if the library supported <amp-video>
s not only the ones hosted on Youtube or Vimeo.
Since the change seems pretty straightforward I'll try to make it myself.
As title.
I use yarn add hexo-generator-amp
will show the error below.
error C:\Users\Administrator\Documents\blog\node_modules\amphtml-validator: Command failed.
Exit code: 1
Command: \bin\sh -c "exit 0" 2> postinstall.DELETEME && rm postinstall.DELETEME || node postinstall-windows.js
Arguments:
Directory: C:\Users\Administrator\Documents\blog\node_modules\amphtml-validator
Output:
path.js:28
throw new TypeError('Path must be a string. Received ' + inspect(path));
^
TypeError: Path must be a string. Received undefined
at assertPath (path.js:28:11)
at Object.join (path.js:489:7)
at Object.<anonymous> (C:\Users\Administrator\Documents\blog\node_modules\amphtml-validator\postinstall-windows.js:43:10)
at Module._compile (module.js:569:30)
at Object.Module._extensions..js (module.js:580:10)
at Module.load (module.js:503:32)
at tryModuleLoad (module.js:466:12)
But use npm i -S hexo-generator-amp
works
node 8.1.4
npm 5.0.3
yarn 1.2.1
The logo image displayed on pages may be different then the logo displayed on search results such as google.
In general we should allow overrides for content in <script type="application/ld+json">
vs content in the page.
Front-matter overrides would be best to allow post specific changes.
It seems like hexo-generator-amp always generates sample template even if I specify existing templateDir
in config file. Is there any way to disable this behavior or I'm just missing something?
The template directory has .ejs
, .css
and images directly under itself like below:
amp_template/
├── amp.css
├── amp.ejs
├── sample-avator.png
├── sample-logo.png
├── sample-placeholder.png
├── sample-substituteTitleImage.png
└── sample-yoursite-logo.png
OS version
Node version(node -v
)
$ node -v
v6.10.3
Your site _config.yml
...
generator_amp:
templateDir: amp_template
assetDistDir: amp
cssFilePath: amp.css
templateFilePath: amp.ejs
logo:
path: sample-logo.png
width: 600
height: 60
substituteTitleImage:
path: sample-substituteTitleImage.png
width: 1024
height: 800
warningLog: true
validateAMP: true
...
Plugin version(npm ls --depth 0
)
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
└── [email protected] extraneous
I'm using the theme hexo-theme-suka and I was added the generator_amp
part to the theme's file (themes/suka/layout/_partial/head/index.ejs
)'s first line
But when I was trying to test my blog via https://validator.ampproject.org , I got this error
- CSS syntax error in tag 'style amp-custom' - incomplete declaration.AUTHOR_STYLESHEET_PROBLEM line 1744, column 290
- CSS syntax error in tag 'style amp-custom' - invalid declaration.AUTHOR_STYLESHEET_PROBLEM line 1744, column 309
- CSS syntax error in tag 'style amp-custom' - incomplete declaration.AUTHOR_STYLESHEET_PROBLEM line 1744, column 317
- CSS syntax error in tag 'style amp-custom' - invalid declaration.AUTHOR_STYLESHEET_PROBLEM line 1744, column 337
- CSS syntax error in tag 'style amp-custom' - incomplete declaration.AUTHOR_STYLESHEET_PROBLEM line 1744, column 378
- CSS syntax error in tag 'style amp-custom' - invalid declaration.AUTHOR_STYLESHEET_PROBLEM line 1744, column 392
This is the error part.
#hexo-amp-id-1{color:#DB4D6D;}#hexo-amp-id-2{color:#DB4D6D;}#hexo-amp-id-3{color:#DB4D6D;}#hexo-amp-id-4{color:#DB4D6D;}#hexo-amp-id-5{color:#DB4D6D;}#hexo-amp-id-6{background-color:black;color:white;text-decoration:none;padding:4px 6px;font-family:-apple-system, BlinkMacSystemFont, "San Francisco", "Helvetica Neue", Helvetica, Ubuntu, Roboto, Noto, "Segoe UI", Arial, sans-serif;font-size:12px;font-weight:bold;line-height:1.2;display:inline-block;border-radius:3px}#hexo-amp-id-7{display:inline-block;padding:2px 3px}#hexo-amp-id-8{height:12px;width:auto;position:relative;vertical-align:middle;top:-2px;fill:white}#hexo-amp-id-9{display:inline-block;padding:2px 3px}
the problem is I could't find how is this part comes from, and how to fix it
(exclude the first minus sign)
- "San Francisco", "Helvetica Neue", Helvetica, Ubuntu, Roboto, Noto, "Segoe UI"
the is Example HTML file to this full page
OS version
Node version(node -v
)
v12.11.1
Your site _config.yml
generator_amp:
templateDir: amp-template
assetDistDir: amp-dist
logo:
path: sample/sample-logo.png
width: 600
height: 60
substituteTitleImage:
path: sample/sample-substituteTitleImage.png
width: 1024
height: 800
warningLog: true # To display warning, please set true.
generateAmpPath: amp/archives/:abbrlink/
Plugin version(npm ls --depth 0
)
hexo-site@0.0.0 /Users/edisonjwa/Documents/git/Hexo-CI
├── core-js@3.2.1
├── hexo@3.9.0
├── hexo-abbrlink@2.0.5
├── hexo-cdnify@0.0.2
├── hexo-cli@3.0.0
├── hexo-generator-amp@3.2.0
├── hexo-generator-archive@1.0.0
├── hexo-generator-baidu-sitemap@0.1.6
├── hexo-generator-category@1.0.0
├── hexo-generator-feed@2.0.0
├── hexo-generator-index@1.0.0
├── hexo-generator-sitemap@1.2.0
├── hexo-generator-tag@1.0.0
├── hexo-renderer-ejs@1.0.0
├── hexo-renderer-marked@2.0.0
├── hexo-renderer-stylus@1.1.0
├── hexo-server@1.0.0
├── hexo-spoiler@1.5.2
├── hexo-tag-aplayer@3.0.4
├── hexo-uglify@1.0.0
└── node-pre-gyp@0.12.0
I would recommend removing css properties:
word-break
and
word-wrap: break-word;
whenever I do a "hexo generate", it copy the fresh template copy and replace my original folder, i wonder how can I refer back to my custom logo and avatar? I wonder if I place my custom amp-template folder to the wrong place(currently I place it at project entry, parallel to "themes", "source", and "public" folder). as below:
├── amp-template
├── images
├── index.html
├── js
├── node_modules
├── package.json
├── page
├── public
├── robots.txt
├── scaffolds
├── search.xml
├── sitemap.xml
├── source
├── tags
├── themes
└── vendors
The log I receive from CI environment is:
$ hexo clean
[17:42:33.690] [hexo-generator-amp] hexo-generator-amp's template has been copied to the your project.
Please check the following file.
-> /home/travis/build/chocoluffy/chocoluffy.github.io/amp-template/sample
INFO Deleted database.
INFO Deleted public folder.
And my node\nvm environment is:
$ node --version
v7.10.1
$ npm --version
4.2.0
$ nvm --version
0.33.8
on Linux.
Everything about AMP works properly, I just wonder how can I apply my custom assets instead of using the default one. Thanks in advance!
[UPDATE]: problem fixed. I check the source code, found that it actually requires several png files to be at the right folder to avoid error condition. (before I just placed my logo png inside).
Hi, I am using your hexo-generator-amp plugin and that works quite well. However, I notice that because the amp disallow the third party javascript, the formula I write in .md
could not be render correctly in amp page.
I notice that amp has support MathML in the beginning of 2018. So I would like to do a little change: when generate the amp page, use the regex to replace $(.*)$
and $$(.*)$$
to <amp-mathml layout="container" data-formula="\[ (.*) \]"> </amp-mathml>
Do you know any idea how to render the formula elegantly except this method? Also, could you provide some hints or information about how and where should I modify the code? I guess I should add a formula.js
in the filter to do the replacement and call it in generator.js
. Am I correct? I am willing to make a contribution!
INFO Start processing
events.js:160
throw er; // Unhandled 'error' event
^
Error: getaddrinfo ENOTFOUND suishoshizuku.com suishoshizuku.com:443
at errnoException (dns.js:28:10)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:76:26)
Latest version need verify file URL ?
INFO Start processing
[17:52:25.217] [hexo-generator-amp] error: TypeError: unsupported file type: undefined (file: undefined)
This plugin gets width and height by accessing the external image. However, the plugin could not access the external image. Please confirm that the image URL is correct. Or, add the width and height to the post. : http://wx3.sinaimg.cn/wp-content/uploads/2014/08/ublock1.png
Please check the following file.
-> _posts/ublock.md
This URL is invalid.
INFO Start processing
[hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently checking the cache now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently replacing table align now ... [hexo-generator-amp] Plugin is currently restorating
delete amp-template
, and remove and reinstall npm package,
hexo g
again , then
INFO Start processing
FATAL Something's wrong. Maybe you can find the solution here: http://hexo.io/docs/troubleshooting.html
ReferenceError: post is not defined
at Object. (/Path/Blog/node_modules/hexo-generator-amp/lib/filter/video.js:28:91)
at initialize.exports.each (/Path/Blog/node_modules/hexo-generator-amp/node_modules/cheerio/lib/api/traversing.js:300:24)
at /Path/Blog/node_modules/hexo-generator-amp/lib/filter/video.js:24:16
at Promise._execute (/Path/Blog/node_modules/bluebird/js/release/debuggability.js:300:9)
at Promise._resolveFromExecutor (/Path/Blog/node_modules/bluebird/js/release/promise.js:481:18)
at new Promise (/Path/Blog/node_modules/bluebird/js/release/promise.js:77:14)
at module.exports.filter_video (/Path/Blog/node_modules/hexo-generator-amp/lib/filter/video.js:17:10)
at tryCatcher (/Path/Blog/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/Path/Blog/node_modules/bluebird/js/release/promise.js:510:31)
at Promise._settlePromise (/Path/Blog/node_modules/bluebird/js/release/promise.js:567:18)
at Promise._settlePromise0 (/Path/Blog/node_modules/bluebird/js/release/promise.js:612:10)
at Promise._settlePromises (/Path/Blog/node_modules/bluebird/js/release/promise.js:691:18)
at Async._drainQueue (/Path/Blog/node_modules/bluebird/js/release/async.js:133:16)
at Async._drainQueues (/Path/Blog/node_modules/bluebird/js/release/async.js:143:10)
at Immediate.Async.drainQueues (/Path/Blog/node_modules/bluebird/js/release/async.js:17:14)
at runCallback (timers.js:649:20)
at tryOnImmediate (timers.js:622:5)
at processImmediate [as _immediateCallback] (timers.js:594:5)
FATAL post is not defined
ReferenceError: post is not defined
at Object. (/Path/Blog/node_modules/hexo-generator-amp/lib/filter/video.js:28:91)
at initialize.exports.each (/Path/Blog/node_modules/hexo-generator-amp/node_modules/cheerio/lib/api/traversing.js:300:24)
at /Path/Blog/node_modules/hexo-generator-amp/lib/filter/video.js:24:16
at Promise._execute (/Path/Blog/node_modules/bluebird/js/release/debuggability.js:300:9)
at Promise._resolveFromExecutor (/Path/Blog/node_modules/bluebird/js/release/promise.js:481:18)
at new Promise (/Path/Blog/node_modules/bluebird/js/release/promise.js:77:14)
at module.exports.filter_video (/Path/Blog/node_modules/hexo-generator-amp/lib/filter/video.js:17:10)
at tryCatcher (/Path/Blog/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/Path/Blog/node_modules/bluebird/js/release/promise.js:510:31)
at Promise._settlePromise (/Path/Blog/node_modules/bluebird/js/release/promise.js:567:18)
at Promise._settlePromise0 (/Path/Blog/node_modules/bluebird/js/release/promise.js:612:10)
at Promise._settlePromises (/Path/Blog/node_modules/bluebird/js/release/promise.js:691:18)
at Async._drainQueue (/Path/Blog/node_modules/bluebird/js/release/async.js:133:16)
at Async._drainQueues (/Path/Blog/node_modules/bluebird/js/release/async.js:143:10)
at Immediate.Async.drainQueues (/Path/Blog/node_modules/bluebird/js/release/async.js:17:14)
at runCallback (timers.js:649:20)
at tryOnImmediate (timers.js:622:5)
at processImmediate [as _immediateCallback] (timers.js:594:5)
0e9f9be This commit is wrong.
old version is ok.
I see this plugin creates amp pages for only posts.
How can I create amp page for site index ?
my-domain.com/amp ?
Hexo 3.2.0 breaks minifiers, but there was a fixed added at sha: 95fb3ce22621bc477e48adfec4152696eb1aae29
So before the next version of Hexo is available on npm you can use git:
npm install //[email protected]:hexojs/hexo.git --save
That will fix minification for standard pages using hexo-all-minifier plugin, however, this plugin will not be fully minified.
Only contents of page in <div class="entry-content ecp">
will be minified.
It would probably be a better choice to create an amp
sub folder to contain the index.html and any amp specific assets that may need generated.
Hi there,
This is Ciprian from AMPThemes.io - a market place for AMP themes. I noticed your hexo-generator-amp here on GitHub and I wanted to ask if it would be OK with you to publish it on AMPThemes.io as a freebie, mentioning you as an author and all. Looking forward to hearing your thoughts.
My Hexo Blog's permanent link structure is like this: :title.html
, for example, if my title is hello-world
, the permanent link will be blogsite.com/hello-world.html
.
While configuring this plugin, I found that under my link settings, the plugin could not generate contents like /public/hello-world.html/amp/index.html
. So generateAmpPath: :title.html/amp/ #(optional) Custom AMP HTML Path
will not work.
I looked into #24 and followed your instruction to change the generateAmpPath
variable into generateAmpPath: amp/:title.html
, then it does work and able to generate the amp static files for me.
But according to the instruction in README as well as #14, I put the following code into path\to\hexo\themes\next\layout\_partials\head\head.swig
{% if is_post() && config.generator_amp %}
<link rel="amphtml" href="./amp/index.html">
{% endif %}
But currently the amp generate location has been changed, ./amp/index.html
will be a 404 for sure, so what should I do to make the amphtml
tag to work?
Many thanks for all the effects in developing this plugin whilst answering questions like this one. More details are provided below.
OS version
Node version(node -v
)
v10.7.0
Plugin version(npm ls --depth 0
)
I dont know why these errors occur.
npm ERR! missing: [email protected], required by [email protected]
npm ERR! missing: [email protected], required by [email protected]
npm ERR! missing: [email protected], required by [email protected]
npm ERR! missing: [email protected], required by [email protected]
npm ERR! missing: [email protected], required by [email protected]
npm ERR! missing: [email protected], required by [email protected]
npm ERR! missing: [email protected], required by [email protected]
npm ERR! missing: [email protected], required by [email protected]
npm ERR! missing: [email protected], required by [email protected]
npm ERR! missing: [email protected], required by [email protected]
npm ERR! missing: [email protected], required by [email protected]
npm ERR! missing: [email protected], required by [email protected]
npm ERR! missing: [email protected], required by [email protected]
npm ERR! missing: [email protected], required by [email protected]
npm ERR! missing: [email protected], required by [email protected]
npm ERR! missing: [email protected], required by [email protected]
npm ERR! missing: [email protected], required by [email protected]
npm ERR! missing: [email protected], required by [email protected]
npm ERR! missing: [email protected], required by [email protected]
npm ERR! missing: [email protected], required by [email protected]
npm ERR! missing: [email protected], required by [email protected]
npm ERR! missing: [email protected], required by [email protected]
npm ERR! missing: [email protected], required by [email protected]
npm ERR! missing: [email protected], required by [email protected]
npm ERR! missing: [email protected], required by [email protected]
npm ERR! missing: [email protected], required by [email protected]
npm ERR! missing: [email protected], required by [email protected]
npm ERR! missing: [email protected], required by [email protected]
npm ERR! missing: [email protected], required by [email protected]
npm ERR! missing: [email protected], required by [email protected]
npm ERR! missing: [email protected], required by [email protected]
npm ERR! missing: [email protected], required by [email protected]
npm ERR! missing: [email protected], required by [email protected]
npm ERR! peer dep missing: eslint@>= 4.12.1, required by [email protected]
Again, thanks a lot.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.