- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在我必须缩小输出包之前,我有一个 webpack 配置可以与 typescript 完美配合。我有一个正在逐步更新为 typescript 的项目——目前有一个文件已迁移到 typescript ,当我运行 babel-node 和我的开发包(不使用 Uglify 来缩小 js)时它可以正常工作。但是,一旦我运行我的产品包,我就会收到以下错误:
ERROR in main.ab0b2e37030c63351bb8.js from UglifyJs
SyntaxError: Unexpected token: name (App) [./components/App.ts:12,0]
这是我的 webpack 配置:
const config = {
context: ROOT,
output: {
path: path.resolve(__dirname, '../build/public/assets'),
publicPath: '/assets/',
sourcePrefix: ' ',
},
module: {
loaders: [
{
test: /\.tsx?$/,
loader: "awesome-typescript-loader"
},
{
enforce: "pre",
test: /\.js$/,
loader: "source-map-loader"
},
{
test: /\.jsx?$/,
loader: 'babel-loader',
include: [
ROOT
],
query: {
cacheDirectory: DEBUG,
babelrc: false,
presets: [
'react',
'es2015',
'stage-0',
],
plugins: [
'transform-runtime',
[
'react-css-modules',
{
context: ROOT,
generateScopedName: CSS_SCOPE_NAME
}
],
'transform-decorators-legacy',
...DEBUG ? [] : [
'transform-react-remove-prop-types',
'transform-react-constant-elements',
'transform-react-inline-elements'
],
],
},
},
{
test: /\.css/,
loaders: [
'isomorphic-style-loader',
`css-loader?${JSON.stringify({
sourceMap: DEBUG,
modules: true,
importLoaders: 1,
localIdentName: CSS_SCOPE_NAME,
minimize: !DEBUG,
})}`,
'postcss-loader?pack=default',
],
},
{
test: /\.scss$/,
loaders: [
'isomorphic-style-loader',
`css-loader?${JSON.stringify({ sourceMap: DEBUG, minimize: !DEBUG })}`,
'postcss-loader?pack=sass',
'sass-loader',
],
},
{
test: /\.json$/,
loader: 'json-loader',
},
{
test: /\.txt$/,
loader: 'raw-loader',
},
{
test: /\.(png|jpg|jpeg|gif|svg|woff|woff2)$/,
loader: 'url-loader',
query: {
name: DEBUG ? '[path][name].[ext]?[hash]' : '[hash].[ext]',
limit: 10000,
},
},
{
test: /\.(eot|ttf|wav|mp3)$/,
loader: 'file-loader',
query: {
name: DEBUG ? '[path][name].[ext]?[hash]' : '[hash].[ext]',
},
},
],
},
resolve: {
root: ROOT,
modulesDirectories: ['node_modules'],
extensions: ['', '.webpack.js', '.web.js', '.js', '.jsx', '.json', '.ts', '.tsx'],
},
cache: DEBUG,
debug: DEBUG,
stats: {
colors: true,
reasons: DEBUG,
hash: VERBOSE,
version: VERBOSE,
timings: true,
chunks: VERBOSE,
chunkModules: VERBOSE,
cached: VERBOSE,
cachedAssets: VERBOSE,
errorDetails: true
}
};
const clientConfig = _.merge(true, {}, config, {
entry: './client.js',
output: {
filename: DEBUG ? '[name].js?[chunkhash]' : '[name].[chunkhash].js',
chunkFilename: DEBUG ? '[name].[id].js?[chunkhash]' : '[name].[id].[chunkhash].js',
},
target: 'web',
plugins: [
new webpack.DefinePlugin({ ...GLOBALS, 'process.env.BROWSER': true }),
new AssetsPlugin({
path: path.resolve(__dirname, '../build'),
filename: 'assets.js',
processOutput: x => `module.exports = ${JSON.stringify(x)};`,
}),
new webpack.optimize.OccurrenceOrderPlugin(true),
...DEBUG ? [] : [
new webpack.optimize.DedupePlugin(),
new webpack.optimize.UglifyJsPlugin({
compress: {
screw_ie8: true, // jscs:ignore requireCamelCaseOrUpperCaseIdentifiers
warnings: VERBOSE,
},
}),
new webpack.optimize.AggressiveMergingPlugin(),
],
],
devtool: DEBUG ? 'source-map' : false,
});
App.ts 看起来像这样:
import * as React from 'react';
import { PropTypes } from 'react';
import { connect } from 'react-redux';
const ContextType = {
store: PropTypes.object.isRequired,
history: PropTypes.object.isRequired,
insertCss: PropTypes.func.isRequired,
};
class App extends React.Component<any, any> {
static propTypes = {
context: PropTypes.shape(ContextType).isRequired,
children: PropTypes.element.isRequired,
};
static childContextTypes = ContextType;
constructor(props: any) {
super(props);
}
getChildContext() {
return this.props.context;
}
render() {
return React.Children.only(this.props.children);
}
}
export default App
最佳答案
那是因为目前 UglifyJsPlugin 仅适用于 es5,而您可能正在使用 es6 或 es2017。检查你的 tsconfig.json 文件并确保它被设置为使用 es5
关于javascript - 如何使用 Webpack 丑化 Typescript 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43511822/
我需要使用括号表示法来定义 run() block 吗?如果我想缩小 JavaScript 文件,即使 run() block 不需要任何参数。 这是我的运行 block 代码 app.run(f
我了解 JS 压缩器、混淆器和压缩器。我想知道是否有任何现有工具(或任何快速编码解决方案)可以部分混淆 JavaScript。部分地我的意思是它应该变得难以阅读,但不会显得丑陋/缩小。它应该保持缩进,
现在我已经成功地将 angular 2 组件集成到我们的 angularJS 应用程序中,我想在发布时对它们进行丑化。但是,如果我使用 SystemJS 构建器,我会收到以下错误: Fatal err
这是我的 webpack 配置: var path = require('path'); var webpack = require('webpack'); var CompressionPlugin
我正在搜索 Flask-Assets过滤器允许我丑化 javascript 并支持 ES6 语法。我尝试使用 uglifyjs-es二进制而不是 uglifyjs但我不知道如何配置我的过滤器以使用 u
我正在努力 php app/console assetic:dump 测试我的生产环境。我的 css 文件正在生成,但不是我的 js 文件。我收到此错误消息: C:\wamp\www\projet>p
我的项目是在 Rails 2 中构建的,并已升级到 Rails 3.1,因此我在 Assets 管道配置(例如预编译)方面遇到了问题。 我正在使用 app/assets/aplication.js,例
在我必须缩小输出包之前,我有一个 webpack 配置可以与 typescript 完美配合。我有一个正在逐步更新为 typescript 的项目——目前有一个文件已迁移到 typescript ,当
Webpack 在使用继承缩小/丑化 ES6 代码时删除了类名: 有 MVCE我们尝试缩小/丑化的代码: 子类: const ParentClass = require('parent'); clas
我尝试使用 UglifyJS2 来丑化一个简单的 javascript 文件. 文件内容如下: //this is simply a sample var var sampleVar = "xyz";
由于 Bootstrap 4 Alpha 的最新更改,我无法使用当前的 Gulp 任务缩小核心 .js 文件。我收到错误:“GulpUglifyError:无法缩小 JavaScript”。 正在关注
在服务器端,我使用 Connect 和 Socket.IO。我想为我的客户端代码(也是 CofeeScript)提供编译(到 JavaScript)、丑化和 gzip 压缩。我寻找 Conenct 中
Laravel 5.4 - 混合如何破坏/丑化/混淆脚本 我在以前的版本上使用 gulp。 谢谢 最佳答案 来自Laravel Mix文档: mix.options({ extractVueSty
我有以下文件:package.json { "name": "uglify", "devDependencies": { "grunt": "^1.0.1", "grunt-c
我如何像在 Instagram 或 Facebook 上那样丑化我的 css 文件? 例如 _8f735、_oofbn、_6ltyr这是一些 react 插件还是什么?我只在 Instagram 和
所以我开始使用 Gulp 来自动化我的工作流程,我正在尝试它,但是当执行连接和丑化多个文件的任务时,我遇到了 IIFE 中的一些代码丢失的情况。要连接,请使用gulp-usref。 // a-fi
我目前正在使用以下 webpack.config.js: var webpack = require('webpack'); module.exports = { entry: __dirname
我正在使用 Play framework 2.3.6 和 Webjars 作为 Web 库依赖项。也就是说,我的 build.sbt 包含类似“org.webjars”%“angularjs”%“1.
由于我已经将我的 Angular 应用程序升级为使用 Angular CLI 版本 6.x,因此编译它以用于生产(像往常一样使用 ng build --prod)不产生缩小的js。这导致非常大的 ve
我是一名优秀的程序员,十分优秀!