我只想将文件捆绑到我的生产版本中,除非它不是用于DEBUG;
所以我使用webpack.DefinePlugin并设置了变量DEBUG === true。
还webpack.UglifyJsPlugin使用默认选项进行配置
在 js 文件中,我喜欢这样:
const A = DEBUG === true ? null : require('./some-debug.js');
//do things with A, for example
console.log(A)
Run Code Online (Sandbox Code Playgroud)
我检查了最终的包文件,A 被替换为 null(所以DefinePlugin工作正常),但some-debug.js文件的内容仍然在包 js 中。
是否可以让 webpack 不需要该文件?
ps:我想我可以resolve.alias用来解决'./some-debug.js' --> undefined. 但我想保持我的 webpack.config.js 通用,不想应用太多resolve.alias条目。
谢谢
跑步时
npm run build
Run Code Online (Sandbox Code Playgroud)
我遇到了来自 uglify 的与 es6 相关的语法错误,所以我猜 babel 没有正确处理节点模块(秒到分钟)。
我的 .babelrc
{
"presets": ["es2015", "stage-0"],
"plugins": ["transform-runtime"],
"comments": false,
"env": {
"test": {
"plugins": [ "istanbul" ]
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的 Webpack 配置:
var path = require('path')
var config = require('../config')
var utils = require('./utils')
var projectRoot = path.resolve(__dirname, '../')
var env = process.env.NODE_ENV
// check env & config/index.js to decide whether to enable CSS source maps for the
// various preprocessor loaders added to vue-loader at the …Run Code Online (Sandbox Code Playgroud) 我正在使用 webpack 4,我不确定我的代码是否被压缩和缩小。我也在使用 React。
我的第一个问题是在 webpackplugin属性或optimization属性中使用 Webpack UglifyJS 插件。当我使用该plugin属性时,它似乎至少会压缩,但不会压缩到一行。我仍然不确定它是否正在缩小。当我使用optimization它时甚至不压缩。当我查看捆绑的 js 文件时,它似乎捆绑了node_modules诸如webpack.
//与 plugin
module.exports = {
...
plugins: [new UglifyJsPlugin({
test: /\.js$/,
exclude: /node_modules/,
sourceMap: true,
uglifyOptions: {
compress: {},
mangle: true,
}
}],
Run Code Online (Sandbox Code Playgroud)
//不适用于 optimization
module.exports = {
...
optimization: {
minimize: true,
minimizer: [new UglifyJsPlugin({
test: /\.js$/,
exclude: /node_modules/,
sourceMap: true,
uglifyOptions: {
compress: {},
mangle: true,
}
}],
}
Run Code Online (Sandbox Code Playgroud)
在第一个示例中,代码至少被压缩但没有被压缩成一行。
//例子
!*** ./node_modules/scheduler/index.js ***!
\*****************************************/ …Run Code Online (Sandbox Code Playgroud) 我正在使用ready.js将JS文件聚合到一个all.js文件中(没有Google的Closure Compiler),然后使用uglify-js缩小和混淆代码.我想在预提交钩子中完成所有这些操作.
但是,我认为我做错了什么.
我的.git/hooks/pre-commit文件看起来像这样:
#!/bin/sh
readyjs ~/Sites/backbone/js/javascripts/ ~/Sites/backbone/js/ --nojslint -o "underscore.js, backbone.js" --nocompiler
uglifyjs -nm -o ~/Sites/backbone/js/all.min.js ~/Sites/backbone/js/all.js
# Commit
exit
Run Code Online (Sandbox Code Playgroud)
我不应该在这里使用简单的Bash吗?还有别的我做错了吗?这一步似乎完全被忽略了.
我有一个函数,其中包含一个构造函数.它创建一个新对象并返回它:
function car() {
function Car() {}
return new Car();
}
Run Code Online (Sandbox Code Playgroud)
因此,uglify将Car重命名为某个字母,当它返回时,它看起来像对象名称只是一些字母.例如,在chrome中,它会说对象的类型是"t".
有没有办法告诉uglify保留一些函数的名称?
Uglify有一个"压缩"选项,可以删除未使用的变量......
但是,如果我将一些函数存储在像这样的对象中....
helpers = {
doSomething: function () { ... },
doSomethingElese: function () { ... }
}
Run Code Online (Sandbox Code Playgroud)
...有没有办法删除helpers.doSomething(),如果它从未被访问过?
猜猜我想给压缩机许可改变我的对象.
任何想法,如果可能的话?或任何其他可以帮助的工具?
我使用指令要求用户在模态中进行操作确认.
它在开发过程中就像一个魅力,但在缩小之后,它就被打破了.
这是我得到的可怕的" $ injector:unpr "错误:
Error: [$injector:unpr] Unknown provider: aProvider <- a
...
Run Code Online (Sandbox Code Playgroud)
我认为问题是,$scope并且$modalInstance重命名,不应该,但我不知道如何避免这个...
这是指令代码:
'use strict';
app.directive('reallyClick', ['$modal', function($modal) {
var modalInstanceCtrl = function ($scope, $modalInstance) {
$scope.ok = function () {
$modalInstance.close();
};
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
};
};
return {
restrict: 'A',
scope: {
reallyClick: '&',
item: '='
},
link: function (scope, element, attrs) {
element.bind( 'click', function() {
var message = attrs.reallyMessage || 'Are you sure?';
var modalHtml = …Run Code Online (Sandbox Code Playgroud) 使用uglifyJS压缩和缩小我的所有脚本:

这个文件"app.min.js"的大小是982.1KB但是当我试图运行节点服务器并在浏览器中打开应用程序时它停在502kB

过了一会儿

我不知道那里发生了什么,Javascript文件'502kB'有任何限制吗?我想念的是什么
我正在逆向工程一个神奇的脚本。我有一个ug lified源代码和uglifyjs生成的源映射。
有人知道有什么直接的方法可以从中获得至少部分可读的源代码吗?我发现了一些晦涩的方法,包括通过多种语言进行转换,但我希望能有更好的方法。
谢谢!
我阅读了编译器指南.他们有许多优化技术,如删除冗余代码或删除未使用的变量,没有使用任何方法.
但像js这样的脚本语言没有编译器,因此不需要进行优化.
我读了一篇关于js优化器的文章:
- Google Closure Compiler https://github.com/google/closure-compiler
- UglifyJS https://github.com/mishoo/UglifyJS
Run Code Online (Sandbox Code Playgroud)
真正的问题是反应原生,角度,使用代码优化等平台,还是我应该自己使用?
uglifyjs ×10
javascript ×7
webpack ×3
minify ×2
android ×1
angularjs ×1
babeljs ×1
ecmascript-6 ×1
git ×1
githooks ×1
gruntjs ×1
node.js ×1
npm ×1
obfuscation ×1
optimization ×1
react-native ×1
reactjs ×1
source-maps ×1
tree-shaking ×1
uglifyjs2 ×1
webpack-2 ×1