从Meteor 1.3开始,npm是推荐的打包系统,我现在在node_modules
目录中有服务器端和客户端包。 Meteor尝试将所有这些捆绑到一个巨大的modules.js
文件中。
让meteor完全忽略文件的唯一方法是更改文件或目录名称(1,2)。
但我不想完全忽略这些文件 - 我只需要在服务器端部署一些模块,有些只在客户端部分。
有没有办法让Meteor只在客户端包中包含某些节点模块,可能是通过广告素材命名或黑客攻击.babelrc
?
答案 0 :(得分:0)
所有内容都需要进入服务器上的捆绑包。当您访问您的网站时,服务器会使您的HTML,CSS和JS可用并加载到浏览器中。只有浏览器所需的节点模块才会被加载。
没有必要这样做:)
答案 1 :(得分:0)
将它们隐藏在 server 文件夹中并间接导入它们。
将某些npm node_modules 排除在大量 modules.js 文件中,并防止将无用的兆字节脚本发送到客户端:有条件require
一个文件本身imports
来自服务器文件夹中的模块。
像这样:
/* /my-import-file.js */
import { Meteor } from 'meteor/meteor';
if (Meteor.isServer) {
module.exports = require('./server/server-only-file');
}
实际导入大型无用的客户端npm模块的文件:
/* /server/server-only-file.js */
// Import some modules that will NOT be sent to the client
import mailgun from 'mailgun.js';
import cheerio from 'cheerio';
import juice from 'juice';
export { juice, cheerio, mailgun };
您的其他代码可以这样做:
import { Meteor } from 'meteor/meteor';
import myImport from '/my-import-file'
if(Meteor.isServer){
myImport.doServerOnlyStuff();
}