这一定是一个普遍解决的问题,但到目前为止我在Google / SO上找不到很多。
当我们运行npm install
并获取50多个包,包括devDependencies以及运行时依赖项时,npm创建node_modules
(如果需要)并在该文件夹中添加每个包。这意味着我们最终会在node_modules
下包含数千个无关文件。每个包都包含自己的package.json,README.md,缩小文件,源文件等。我们的应用程序真的只关心jquery.js(对于DEV)和jquery.min.js(对于PROD),所以看起来好像将所有这些其他文件包含在我们的构建中,因此包含在我们的Web服务器中是浪费。
在以某种方式处理这些npm
包时是否有标准,以便我们只向用户公开必要的文件?我想很多人都有这样的问题但是我没有看到任何内置的npm结构允许我们轻松地做到这一点。
见下文..黄色突出显示的文件是我们在Production中真正关心的唯一文件,但我们也获得了所有这些额外文件,包括源代码。
答案 0 :(得分:0)
编辑package.json文件并删除所有不必要的依赖项,然后执行
npm install --save
通过执行此操作,它将创建一个本地node_modules
文件夹,并仅将必要的包下载到其中(而不是全局node_modules
文件夹)
请记住,默认情况下,节点检查本地node_modules
文件夹。如果找不到它,它将使用全局文件夹。
此外,您不会公开node_modules
文件夹中的所有软件包。实际上,除非您在node.js文件中require();
修改强>
要使jQuery在Node中工作,需要一个包含文档的窗口。由于Node中本身不存在这样的窗口,因此可以通过诸如jsdom之类的工具来模拟。这可用于测试目的。 https://www.npmjs.com/package/jquery
require("jsdom").env("", function(err, window) {
if (err) {
console.error(err);
return;
}
var $ = require("jquery")(window);
});
所以jquery module
在node.js的场景后面做的事情与常规的前端jquery相比有点不同。
它需要jsdom
,因此您必须从此处下载https://github.com/tmpvar/jsdom
答案 1 :(得分:0)
最常见的解决方案包括将您的应用程序捆绑在另一台计算机上,然后在生产服务器上公开构建的工件。
那里有很多很棒的JS捆绑包。我个人使用的是Browserify,Webpack和Rollup。所有令人惊叹的工具。
主要思想包括在Node环境中编写应用程序,然后将其捆绑以使其对浏览器可读。
对于更简单的项目,我发现Browserify在功能和易配置性之间做了很好的折衷。但最后还是品味问题。 :)
答案 2 :(得分:0)
根据我读到的npm install documentation,我认为没有选择以您想要的方式操作安装。软件包将以软件包作者决定打包的方式安装,有时候有时会缩小。
话虽如此,你应该寻找第三方solutions like modclean,它完全符合你想要的包后安装。在项目目录的根目录中运行此命令
signInWithCustomToken
只要您的测试覆盖率良好,ModClean就可以满足您的需求。