在web应用程序中将node_modules或bower_components复制到静态/公共目录

我正在使用一个Node.js Expressnetworking服务器 – 我看到一些使用Grunt或Gulp脚本的人将bower_components目录复制到/ public目录,以便可以请求这些资源。 有没有更好的方法指向bower_components或node_modules,而不仅仅是在构build期间复制文件?

您始终可以直接从HTML指向您的凉亭组件:

<script src="bower_components/jquery/dist/jquery.min.js"></script> 

人们build议不这样做的原因是因为您可能不想将整个凉亭目录复制到生产环境。 但是,您可以始终在bower目录中进行打包,并在上传到生产服务器之前仅包含所需的文件,这意味着您可以像上面那样保留HTML中的path。

或者你可以将你需要的文件复制到静态目录中的某个地方,这是比较常用的方法,而且用gulp / grunt这些并不是那么麻烦。

所有这些任务都有各种各样的工具,在Bower网站的工具页面上有一个很好的列表,这也会让你了解人们为这个特定问题所采用的方法(并因此而构build了工具)。

http://bower.io/docs/tools/

是的,您也可以在Expressjs目录中使用其他文件夹,如“bower_componenets”,使用:

 app.use('/bower_components', express.static(path.join(__dirname, 'bower_components'))); 

您可以使用多个静态资产目录。

所以你可以定义这样的东西:

 app.use('/public', express.static(path.join(__dirname, 'public'))); app.use('/bower_components', express.static(path.join(__dirname, 'bower_components'))); 

现在express会首先在public dir中search你要求的资源,如果没有find,它会在发送404 not found错误之前在bower_components dir中search。