[英]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
命令后,文件夾webpack_bundle
應包含兩個文件 - index.js
和config.js
。 我已經嘗試通過將以下鍵值添加到外部對象config: './config.js'
來修改外部config: './config.js'
但這不起作用。 我還通過將config.js指定為入口點來創建了一個額外的入口點,但這也沒有用。 我無法弄明白這一點,webpack文檔對於如何實現這一目標並不清楚。 請幫忙!
如果您希望將配置放在單獨的包中,可以通過使用require.ensure
動態導入config.js
文件來創建拆分點 :
require.ensure([], function() {
let config = require('./config.js');
});
然后,您的配置將在一個單獨的包中。
編輯:
如果您不希望Webpack捆綁您的配置文件,我認為您可以使用IgnorePlugin
:
module.exports = {
//...
plugins: [new webpack.IgnorePlugin(/^\.\/config\.js$/)]
}
並使用copy-webpack-plugin復制config.js
文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.