1
我想要使用Webpack来创建一个单一的scripts.js
文件中所有需要的Javascript文件。需要带有Webpack的jQuery插件
在我的main.js
我需要三个模块:
require('jquery');
require('readmore');
require('foundation');
我webpack.config.js
是这样的:
var path = require('path');
module.exports = {
entry: ["./js/main.js"],
output: {
path: path.resolve(__dirname, 'build'),
filename: "scripts.js"
},
resolve: {
modulesDirectories: ["bower_components", "node_modules"],
alias: {
jquery: '../bower_components/jquery/dist/jquery.js',
readmore: '../node_modules/readmore-js/readmore.js',
foundation: '../bower_components/foundation-sites/dist/js/foundation.js'
}
}
}
我的问题:作为readmore-js
是一个jQuery的插件它需要jQuery的本身。 我跑的WebPack后得到这个错误:
ERROR in ./~/readmore-js/readmore.js
Module not found: Error: Can't resolve 'jquery' in '/Users/myName/www/myProject/node_modules/readmore-js'
@ ./~/readmore-js/readmore.js 17:4-31
@ ./js/main.js
@ multi main
从我的理解,问题是readmore也想目录“nodes_modules”中加载模块的jQuery。我的第一个方法是通过将moduleDirectories
添加到配置文件来解决此问题,但它仍然不起作用。 即使在这种情况下,插件也不应该再次加载jQuery。
你知道我如何在全局加载jQuery,然后“告诉”自己需要jQuery的所有模块“看,它就在那里!”
因为它可以帮助,以下是复制出来的插件的readmore.js
:
(function(factory) {
if (typeof define === 'function' && define.amd) {
// AMD
define(['jquery'], factory);
} else if (typeof exports === 'object') {
// CommonJS
module.exports = factory(require('jquery'));
} else {
// Browser globals
factory(jQuery);
}
}
Thx为您的答案,webpack命令的作品! 但我遇到了运行scripts.js的问题,因为我无法访问该插件了: '''未捕获的TypeError:$(...)。readmore不是函数 at Object。 ['''' 我觉得我还有一个全球变数的问题? –
to7be
我有类似的问题。如何加载一些插件而其他插件是不是很神秘。我有一个现有的项目,但不能缝隙找出为什么一些工作和其他不。 – Wouter