How to access npm-installed package in hexo app

余生颓废 提交于 2019-12-02 18:51:59

问题


I am creating a web app using Hexo. I want to use a package called slick-carousel in one of my pages. This package also contains jQuery by the way. So I successfully installed (and "--save"ed) the package via npm. The package shows up in my node_modules folders and on my package.json file.

I expected that after doing this, I should have access to both jQuery and slick functions in my markdown files, but I don't. When I render the generated page on my browser, I am told that 'jQuery is undefined.' What step am I missing here so that I can actually use my installed packages?

Here is the script tag I added to my markdown file that I am trying to make work:

<script> jQuery(document).ready(function(){ jQuery('.carousel').slick({ dots: true, infinite: true, speed: 300, slidesToShow: 1, centerMode: true, variableWidth: true }); }); </script>

I am still trying to fully grasp the relationship between installed packages and the rest of my application, so forgive me if this question doesn't even make sense. Any insight or explanation you can give me would be much appreciated!


回答1:


Just because the scripts are in node_modules, doesn't mean they are automatically added to your projects frontend.

There are different ways to achieve what you need:

Manually moving the assets

Instead of trying to fiddle around with package.json and module requirements, the probably easiest way to get what you want is moving the distribution files of jquery and slick-carousel out of the node_modules folder into a folder where Hexo can work with them better (after a quick read-up it should be source) then you just link your JS file in your HTML layout and everything should work fine

Automatically moving the assets

With using some kind of task toolkit (like Gulp or Grunt) you could write tasks that automatically move the assets out of the node_modules folder inside a folder that is accessible by Hexo, a Gulp task could look something like this:

gulp.task('jquery', function () {
  return gulp.src('./node_modules/jquery/dist/jquery.js')
    .pipe(gulp.dest('./source/js'))
})

Using require (if supported)

I never used Hexo before, so I have no idea of it's internals, but sometimes it might be possible to just use require in the Javascript files to load modules that were downloaded, so you could use

window.jQuery = window.$ = require('jquery')

for example, to directly load the script as module.

You might need to test this yourself, but these are probably the three most common ways to handle assets in Node.js projects.



来源:https://stackoverflow.com/questions/39755626/how-to-access-npm-installed-package-in-hexo-app

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!