我如何使webpack跳过
require('shelljs/global');
在我的源文件中?我想捆绑我的源文件,但保留文件中的require('shelljs/global'),而不捆绑shelljs/global。
require('shelljs/global')
shelljs/global
mi7gmzs61#
如果你将路径存储在一个变量中,IgnorePlugin将无法工作。尽管你仍然可以:
const myCustomModule = eval('require')(myCustomPath)
zpgglvta2#
您可以使用忽略插件(webpack 1)/Ignore plugin (webpack 2)。在webpack.config.js中添加插件:
webpack.config.js
plugins: [ new webpack.IgnorePlugin(/shelljs\/global/), ],
q1qsirdb3#
对于新来的人,在webpack2+上的做法是这样的:
module.exports = { entry: __dirname + '/src/app', output: { path: __dirname + '/dist', libraryTarget: 'umd' }, externals: { 'shelljs/globals': 'commonjs shelljs/global' } };
该包将包含所需逐字记录:
我在webpack的配置指南和一些很好的例子上阅读更多支持的格式here
q35jwt9p4#
这应该是最后的选择,但如果你确定你的JS文件总是被Webpack解析,而不是其他:您可以将require()呼叫替换为__non_webpack_require__()Webpack将解析和转换任何出现的这个,并输出一个普通的require()调用。只有当你在NodeJS中执行或者在浏览器中有一个全局require库可供触发时,这个才会起作用。如果webpack没有解析文件,并且脚本是由其他程序运行的,那么你的代码将尝试调用未转换的__non_webpack_require__,这将失败。你可以编写一些代码,在脚本的前面检查__non_webpack_require__是否作为函数存在,如果不存在,则让它将调用传递给require。然而,这应该是暂时的,并且只是为了避免构建错误,直到您可以将其替换为类似Webpack自己的动态导入。
require()
__non_webpack_require__()
__non_webpack_require__
taor4pac5#
如果require位于全局名称空间中,并且这就是您希望Webpack忽略它的原因,则只需执行window.require()即可
require
window.require()
mzmfm0qo6#
这里有个窍门
const require = module[`require`].bind(module);
请注意模板字符串的使用
ijxebb2r7#
如果某些文件包含嵌套的requires,而您想忽略它们,您可以告诉webpack不要解析这些特定的文件。例如,如果 swiper.js 和 vue-quill-editor.js 有内部requires,这就是如何忽略它们。
module.exports = { module: { noParse: [ /swiper.js/,/quill/ ],
7条答案
按热度按时间mi7gmzs61#
如果你将路径存储在一个变量中,IgnorePlugin将无法工作。尽管你仍然可以:
zpgglvta2#
您可以使用忽略插件(webpack 1)/Ignore plugin (webpack 2)。
在
webpack.config.js
中添加插件:q1qsirdb3#
对于新来的人,在webpack2+上的做法是这样的:
该包将包含所需逐字记录:
我在webpack的配置指南和一些很好的例子上阅读更多支持的格式here
q35jwt9p4#
这应该是最后的选择,但如果你确定你的JS文件总是被Webpack解析,而不是其他:
您可以将
require()
呼叫替换为__non_webpack_require__()
Webpack将解析和转换任何出现的这个,并输出一个普通的
require()
调用。只有当你在NodeJS中执行或者在浏览器中有一个全局require库可供触发时,这个才会起作用。如果webpack没有解析文件,并且脚本是由其他程序运行的,那么你的代码将尝试调用未转换的
__non_webpack_require__
,这将失败。你可以编写一些代码,在脚本的前面检查__non_webpack_require__
是否作为函数存在,如果不存在,则让它将调用传递给require。然而,这应该是暂时的,并且只是为了避免构建错误,直到您可以将其替换为类似Webpack自己的动态导入。
taor4pac5#
如果
require
位于全局名称空间中,并且这就是您希望Webpack忽略它的原因,则只需执行window.require()
即可mzmfm0qo6#
这里有个窍门
请注意模板字符串的使用
ijxebb2r7#
如果某些文件包含嵌套的requires,而您想忽略它们,您可以告诉webpack不要解析这些特定的文件。例如,如果 swiper.js 和 vue-quill-editor.js 有内部requires,这就是如何忽略它们。