如何使用Webpack和UglifyJS删除死代码,但不要最小化代码?
我强调试图让Uglify与我的项目合作,以前我使用过Uglify并没有给出问题,但现在我觉得这与SASS有关.
ERROR in ./~/css-loader!./~/sass-loader!./app/scss/global-header.scss
Module build failed: TypeError: Cannot read property '4' of undefined
at reduce (/Users/contractor/centralefcom-global-components/node_modules/postcss-reduce-transforms/dist/index.js:121:23)
at walk (/Users/contractor/centralefcom-global-components/node_modules/postcss-value-parser/lib/walk.js:7:22)
at ValueParser.walk (/Users/contractor/centralefcom-global-components/node_modules/postcss-value-parser/lib/index.js:18:5)
at /Users/contractor/centralefcom-global-components/node_modules/postcss-reduce-transforms/dist/index.js:131:75
at /Users/contractor/centralefcom-global-components/node_modules/postcss/lib/container.js:92:28
at /Users/contractor/centralefcom-global-components/node_modules/postcss/lib/container.js:73:26
...
...
Run Code Online (Sandbox Code Playgroud)
此错误重复多次,每个多个包一个.
这是我的webpack配置.
var webpack = require('webpack')
var HtmlWebpackPlugin = require('html-webpack-plugin');
var ExtractTextPlugin = require('extract-text-webpack-plugin');
var path = require('path');
module.exports = {
context: __dirname,
resolve: {
modulesDirectories: ['node_modules', 'bower_components']
},
entry: {
'all': [
'./app/global-all.js',
'./app/scss/global-all.scss'
],
'footer': [
'./app/global-footer.js',
'./app/scss/global-footer.scss'
],
'header': [
'./app/global-header.js',
'./app/scss/global-header.scss'
],
'footer.nodeps': [
'./app/global-footer-nodeps.js', …Run Code Online (Sandbox Code Playgroud) javascript uglifyjs webpack webpack-style-loader html-webpack-plugin
我是新手,并且遇到了一个可能是非常常见的问题.我正在尝试的东西是将打字稿编译成javascript,为它创建一个源图,然后运行uglify.我想有一个ugliyfied以及非uglified js的源图.
我想要实现的是以下文件结构:
framework.js
framework.js.map < this won't work
framework.min.js
framework.min.js.map
Run Code Online (Sandbox Code Playgroud)
这是我的一项任务:
var gulp = require('gulp'),
uglify = require('gulp-uglify')
ts = require("gulp-typescript")
sourcemaps = require('gulp-sourcemaps')
rename = require('gulp-rename');
var tsProject = ts.createProject("tsconfig.json");
gulp.task('typescript', function(){
tsProject.src()
.pipe(sourcemaps.init())
.pipe(tsProject()).js
.pipe(sourcemaps.write('.')) // Write sourcemap for non-minified version
.pipe(gulp.dest("dist"))
.pipe(uglify()) // Code will fail here
.pipe(rename({suffix:'.min'}))
.pipe(sourcemaps.write('.')) // Write sourcemap for minified version.
.pipe(gulp.dest("dist"));
});
gulp.task('default', ['typescript']);
Run Code Online (Sandbox Code Playgroud)
如您所见,我正在运行sourcemaps.write()两次以获取两个不同的文件.这给了我一个错误
tream.js:74
throw er; // Unhandled stream error in pipe.
^ GulpUglifyError: unable to minify JavaScript
at …Run Code Online (Sandbox Code Playgroud) 到目前为止,我的应用程序功能很少(这就是为什么我要问以后这是否会让我感到困惑,即使它现在似乎有效).稍后它会变得更大(react-router,redux,其他js库,如Auth0,甚至可能是一些实际的功能.)
我有一个app.css包含:
@import url("node_modules/bootstrap/dist/css/bootstrap.css");
Run Code Online (Sandbox Code Playgroud)
然后我将其导入到我index.tsx的:
import './app.css';
Run Code Online (Sandbox Code Playgroud)
这一切似乎都起作用,因为我的helloworld反应组件显示"hello world".
但是,在构建期间,uglify报告:
WARN: Output exceeds 32000 characters
Run Code Online (Sandbox Code Playgroud)
我应该忽略它吗?如果是这样,有没有办法压制它?
查看uglify生成的文件显示,它似乎确保没有行超过32000个字符 - 大多数行截断时间仅为32000(31999处为1).
但是有一行var css='/*!\n * Bootstrap v3.3.7 ...'是120K字符长.我认为这是Uglify试图告诉我的,但有什么大不了的?
我在我的windows框上安装了nodejs.org的nodejs.
节点的路径是C:\ Program Files(x86)\nodejs \node.exe
我可以在命令提示符中正确运行node,我的问题是......我将uglifyjs克隆到C:\ gitrepos\uglifyjs\
现在我想弄清楚如何设置东西来运行类似的东西
node uglifyjs -o inputfile.min.js inputfile.js
Run Code Online (Sandbox Code Playgroud)
允许我这样做会发生什么?
使用Coffeescript我需要经历一个构建脚本来更新我的.js文件,我有两个,一个用于调试,一个用于生产(一个使用Uglify来最小化文件,一个不使用).所以我认为使用一些条件编译也很方便,代码只能进入调试版本.
实现这一目标的最简单方法是什么?理想情况下,我可以通过简单的命令行开关来控制咖啡或uglify?
有没有办法告诉UglifyJS跳过特定的代码段,也许使用这样的注释:
// uglifyjs:skipStart
filter = function(item){ /* some crazy filter logic that will repeat 500,000 times */ }
// uglifyjs:skipEnd
Run Code Online (Sandbox Code Playgroud)
我的用例与避免缩小函数有关,该函数将以自定义方式内联和解析以获得性能增益.缩小会破坏简化的解析器.
尝试使用webpack进行生成构建时出现以下错误2.2.1:
> cross-env NODE_ENV=production webpack --config internals/webpack/webpack.prod.babel.js --color -p --progress
Hash: 7bb2cdb98aab2f36f7e1
Version: webpack 2.2.1
Time: 259158ms
Asset Size Chunks Chunk Names
39.1ac14d04bb54ae025fbd.chunk.js 575 kB 39 [emitted] [big]
.htaccess 1.53 kB [emitted]
manifest.json 624 bytes [emitted]
0.b0881f3ea995a2fc465f.chunk.js 600 kB 0 [emitted] [big]
1.350b2d8a46d91e3c0911.chunk.js 918 kB 1 [emitted] [big]
2.e52c43dc81bf586e8812.chunk.js 636 kB 2 [emitted] [big]
3.c7b3f0e5477649c6c9d3.chunk.js 646 kB 3 [emitted] [big]
4.8ce7dfe0860e39ae2456.chunk.js 631 kB 4 [emitted] [big]
5.d78c86c5b48b1b431c01.chunk.js 632 kB 5 [emitted] [big]
6.9f79d2c5fa73cb97cc74.chunk.js 630 kB 6 [emitted] [big] …Run Code Online (Sandbox Code Playgroud) 我在过去的两天里遇到过这个问题.所以我决定从webpack构建过程中完全禁用uglifyjs-webpack-plugin.我无法在webpack 4上找到任何东西.
uglifyjs ×10
javascript ×4
webpack ×4
node.js ×2
coffeescript ×1
css ×1
gruntjs ×1
gulp ×1
minify ×1
obfuscation ×1
reactjs ×1
typescript ×1
uglifyjs2 ×1
webpack-4 ×1