删除捆绑死代码

时间:2016-03-26 15:26:23

标签: javascript requirejs compression webpack browserify

我正在使用browserify与CommonJs。

我有这种结构的文件2.

module.exports = {
  value: 'bling bling'
};

我有这种结构的文件1.

var file2 = require('./file2.js');

console.log('this is the file 2 object value', file2.value);

所以我在终端

中运行以下命令
$ browserify -g uglifyify ./file1.js | uglifyjs -c > bundle.js

捆绑结果将是。

!function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a="function"==typeof require&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){var file2=require("./file2.js");console.log("this is the file 2 object value",file2.value)},{"./file2.js":2}],2:[function(require,module,exports){module.exports={value:"bling bling"}},{}]},{},[1]);

我想知道是否有机会通过任何转换为​​我的捆绑文件获得不同的结果以获得以下内容。

var file2 = { value: 'bling bling' }; console.log('this is the file 2 object value', file2.value);

我只是希望我的代码在最终结果中没有任何额外的browserify或webpack或requirejs编码,可能我只是错误地使用该工具,但在使用这些工具时,这总是发生在我身上。

这些工具中的一些产生或多或少的编码,但我无法弄清楚如何删除这些额外的代码。

1 个答案:

答案 0 :(得分:2)

您可以使用rollup,默认情况下使用es6模块。 Es6导入是静态的,因此您的bundle将没有require函数或其中的任何内容。您的代码将是:
档案1

export default {
    value: 'bling bling'
};

文件2

import file2 from './file2.js';

console.log('this is the file 2 object value', file2.value);

在我的项目中,我运行以下命令来使用汇总:

./node_modules/rollup/bin/rollup file1.js

这里有关于es6模块的more information