bable打包的use strict取消vue-cli3
1.插件transform-remove-strict-mode
npm i babel-plugin-transform-remove-strict-mode -S
或者yarn add babel-plugin-transform-remove-strict-mode -S
2.根目录新建loader文件夹
loader下新建remove-strict.js
function removeStrict(code) {
return code.replace(/(\"|\')use strict(\"|\');/gi, '');
}
module.exports = function(source) {
// source 为 compiler 传递给 Loader 的一个文件的原内容
source = removeStrict(source);
return source;
};
3.loader下新建RemoveStrictPlugin .js
class RemoveStrictPlugin {
constructor() {
}
removeStrict(content) {
if (content && content.replace) {
const re = /(\"|\')use strict(\"|\');?/gi;
return content.replace(re, () => {
return '';
});
}
return content;
}
apply(compiler) {
const self = this;
compiler.plugin("compilation", function (compilation) {
compilation.plugin("optimize-chunk-assets", function (chunks, callback) {
let files = [];
chunks.forEach(function (chunk) {
return files.push.apply(files, chunk.files);
});
files.forEach(file => {
let chunkSource = compilation.assets[file];
let source = chunkSource._source;
let children = source.children;
source.children = children.map(item => {
if (typeof item === 'string') {
return self.removeStrict(item);
}
else if (typeof item === 'object' && item._source) {
item._source.value = self.removeStrict(item._source.value);
return item;
}
else {
return item;
}
});
});
callback();
});
});
}
}
module.exports = RemoveStrictPlugin;
4.vue.config.js配置
configureWebpack: { //对象式也可在chainWebpack配置,写法不同
resolveLoader: {
// 这个是声明你本地loader位置的地方,因为我没有上传npm包,remove-strict.js放在loaders目录下
modules: [path.join(__dirname, './loaders/'), 'node_modules']
},
module: {
rules: [
{
test: /\.js$/,
use: [
{
loader: 'babel-loader',
query: {
plugins: ["transform-remove-strict-mode"],
}
},
{
loader: 'remove-strict'
}
]
}
]
},
plugins: [
new RemoveStrictPlugin()
],
},
5.打包部署ie查看,use strict模式关闭