如何包含位于节点内的脚本

我有一个关于将node_modules包含到HTML网站的最佳实践的问题。 想象一下,我的node_modules文件夹里有Bootstrap。 现在对于网站的分发版本(实时版本),我将如何包含位于node_modules文件夹内的Bootstrap脚本和CSS文件? 将Bootstrap放在该文件夹中并执行诸如<script src="./node_modules/bootstrap/dist/bootstrap.min.js"></script>是否<script src="./node_modules/bootstrap/dist/bootstrap.min.js"></script> ? 或者我必须添加规则到我的吞噬文件,然后将这些文件复制到我的dist文件夹? 或者,最好是让gulp以某种方式从我的HTML文件中完全删除本地引导程序并将其替换为CDN版本?


通常,您不想公开您的内部路径以了解您的服务器如何构建到外部世界。 你能为做出/scripts在您的服务器,从他们发生任何目录驻留在取其文件静态路由。所以,如果你的文件在"./node_modules/bootstrap/dist/" 。 然后,页面中的脚本标签看起来像这样:

<script src="/scripts/bootstrap.min.js"></script>

如果你使用express和nodejs,静态路由就像这样简单:

app.use('/scripts', express.static(__dirname + '/node_modules/bootstrap/dist/'));

然后,来自/scripts/xxx.js任何浏览器请求将自动从您的dist目录中获取。

注意:较新版本的NPM将更多内容放在顶层,而不是嵌套得如此之深,因此如果您使用的是较新版本的NPM,则路径名称将与OP的问题和当前答案中指出的路径名称不同。 但是,这个概念还是一样的。 您可以找出文件位于服务器驱动器上的物理位置,然后使用express.static()创建app.use() express.static()以创建这些文件的伪路径,以便您不将实际的服务器文件系统组织暴露给客户端。


如果你不想这样做一个静态路由,那么你最好将公共脚本复制到一个你的Web服务器认为是/scripts或者你想要使用的任何顶层指定的路径。 通常,您可以将此复制部分作为构建/部署过程。


我会使用路径npm模块,然后做这样的事情:

var path = require('path');
app.use('/scripts', express.static(path.join(__dirname, 'node_modules/bootstrap/dist')));

正如jfriend00所提到的,你不应该公开你的服务器结构。 你可以将你的项目依赖文件复制到public/scripts 。 你可以很容易地使用dep-linker来做到这一点:

var DepLinker = require('dep-linker');
DepLinker.copyDependenciesTo('./public/scripts')
// Done
链接地址: http://www.djcxy.com/p/85101.html

上一篇: How to include scripts located inside the node

下一篇: npm postinstall script to run grunt task depending on enviro