我如何防止 .js 文件被 webpack 捆绑
How do i prevent a .js file being bundled by webpack
您好,我目前正在使用 webpack 将我的项目文件捆绑到一个文件中。但是,我不希望 webpack 将我的 config.js 文件捆绑到我设置了所有配置的位置。我希望这在输出文件夹中保持独立,但不确定是否可以实现。
我当前的设置是
//index.js file
#!/usr/bin/env node
'use strict';
let config = require('config.js);
let read = require('read.js);
console.log('i am running through command line');
//read.js file
'use strict'
console.log('read a text file');
//config.js
'use strict';
module.exports = {
name: 'test'
}
//webpack.config.js
let webpack = require('webpack');
let path = require('path');
let fs = require('fs');
let nodeModules = {};
fs.readdirSync('node_modules')
.filter(function (x) {
return [ '.bin' ].indexOf(x) === -1;
})
.forEach(function (mod) {
nodeModules[mod] = 'commonjs ' + mod;
});
module.exports = {
entry: [ 'babel-polyfill', './index.js' ],
target: 'node',
node: {
__dirname: true
},
output: {
path: path.join(__dirname, 'webpack_bundle'),
filename: '[name].js',
libraryTarget: 'commonjs'
},
module: {
loaders: [
{
test: /\.js$/,
loader: 'shebang-loader'
},
{
test: /\.js$/,
loader: 'babel-loader',
query: {
presets: [ 'es2015' ]
}
} ]
},
resolve: {
extensions: [ '.js' ]
},
plugins: [
new webpack.BannerPlugin({banner: '#!/usr/bin/env node', raw: true
})
]
,
externals: nodeModules
};
注意:为了简洁起见,我已经显着简化了代码示例
当前,当我 运行 webpack
命令时,我得到一个文件夹 webpack_bundle
,其中包含一个 index.js
文件 - index.js 文件包含依赖项 config.js
和 read.js
。但是,我想要的是 read.js
依赖项被捆绑到 index.js
文件中,而 config.js
依赖项保留在一个单独的文件中,这是捆绑的 webpack 输出所需要的。因此文件夹 webpack_bundle
在 运行 执行 webpack
命令后应该包含两个文件 - index.js
和 config.js
。我已经尝试通过向外部对象 config: './config.js'
添加以下键值来修改外部对象,但这没有用。我还通过指定 config.js 作为入口点创建了一个额外的入口点,但这也不起作用。我无法弄清楚这一点,webpack 文档也不清楚如何实现这一点。请帮忙!
如果您希望将您的配置放在一个单独的包中,您可以创建一个 拆分点 ,方法是使用 [= 动态导入您的 config.js
文件13=]:
require.ensure([], function() {
let config = require('./config.js');
});
您的配置将在一个单独的包中。
- 关于 Code splitting 的文档(警告:Webpack 1.x 已弃用)。
- 关于 Code Splitting (Webpack 2) 的文档。
编辑:
如果你不想你的配置文件被Webpack打包,我想你可以使用IgnorePlugin
:
module.exports = {
//...
plugins: [new webpack.IgnorePlugin(/^\.\/config\.js$/)]
}
并使用 copy-webpack-plugin 复制您的 config.js
文件。
您好,我目前正在使用 webpack 将我的项目文件捆绑到一个文件中。但是,我不希望 webpack 将我的 config.js 文件捆绑到我设置了所有配置的位置。我希望这在输出文件夹中保持独立,但不确定是否可以实现。
我当前的设置是
//index.js file
#!/usr/bin/env node
'use strict';
let config = require('config.js);
let read = require('read.js);
console.log('i am running through command line');
//read.js file
'use strict'
console.log('read a text file');
//config.js
'use strict';
module.exports = {
name: 'test'
}
//webpack.config.js
let webpack = require('webpack');
let path = require('path');
let fs = require('fs');
let nodeModules = {};
fs.readdirSync('node_modules')
.filter(function (x) {
return [ '.bin' ].indexOf(x) === -1;
})
.forEach(function (mod) {
nodeModules[mod] = 'commonjs ' + mod;
});
module.exports = {
entry: [ 'babel-polyfill', './index.js' ],
target: 'node',
node: {
__dirname: true
},
output: {
path: path.join(__dirname, 'webpack_bundle'),
filename: '[name].js',
libraryTarget: 'commonjs'
},
module: {
loaders: [
{
test: /\.js$/,
loader: 'shebang-loader'
},
{
test: /\.js$/,
loader: 'babel-loader',
query: {
presets: [ 'es2015' ]
}
} ]
},
resolve: {
extensions: [ '.js' ]
},
plugins: [
new webpack.BannerPlugin({banner: '#!/usr/bin/env node', raw: true
})
]
,
externals: nodeModules
};
注意:为了简洁起见,我已经显着简化了代码示例
当前,当我 运行 webpack
命令时,我得到一个文件夹 webpack_bundle
,其中包含一个 index.js
文件 - index.js 文件包含依赖项 config.js
和 read.js
。但是,我想要的是 read.js
依赖项被捆绑到 index.js
文件中,而 config.js
依赖项保留在一个单独的文件中,这是捆绑的 webpack 输出所需要的。因此文件夹 webpack_bundle
在 运行 执行 webpack
命令后应该包含两个文件 - index.js
和 config.js
。我已经尝试通过向外部对象 config: './config.js'
添加以下键值来修改外部对象,但这没有用。我还通过指定 config.js 作为入口点创建了一个额外的入口点,但这也不起作用。我无法弄清楚这一点,webpack 文档也不清楚如何实现这一点。请帮忙!
如果您希望将您的配置放在一个单独的包中,您可以创建一个 拆分点 ,方法是使用 [= 动态导入您的 config.js
文件13=]:
require.ensure([], function() {
let config = require('./config.js');
});
您的配置将在一个单独的包中。
- 关于 Code splitting 的文档(警告:Webpack 1.x 已弃用)。
- 关于 Code Splitting (Webpack 2) 的文档。
编辑:
如果你不想你的配置文件被Webpack打包,我想你可以使用IgnorePlugin
:
module.exports = {
//...
plugins: [new webpack.IgnorePlugin(/^\.\/config\.js$/)]
}
并使用 copy-webpack-plugin 复制您的 config.js
文件。