admin管理员组文章数量:1326333
I have a React application, and in my application I'm relying on react-scripts
, so the build mand is defined like this "build": "react-scripts build"
, and it works all fine. Now, the point is that inside my src
directory I have a JS file called wrapper.js
, which is a standalone file, and it is pure JS, no React stuff, but it uses ES6 and some newer features. So, what I want to do is that, I want create a new mand, which will transpile and minify this file and will create a standalone copy of it. I thought to use webpack
and I created a webpack.config.js
file in the root of my project, which looks like this:
const path = require('path');
const MinifyPlugin = require('babel-minify-webpack-plugin');
module.exports = {
mode: 'production',
output: {
path: __dirname + 'build',
publicPath: '/build/',
filename: 'wrapper.js',
},
module: {
rules: [
{
test: /\.js$/,
include: [
path.resolve(__dirname, 'src', 'wrapper.js')
],
use: {
loader: 'babel-loader',
options: {
presets: ['env']
}
}
}
]
},
plugins: [
new MinifyPlugin()
]
};
And I added the following to my package.json
file "wrapper": "webpack"
. Now, when I run npm run-scripts wrapper
, it executes the webpack mand, but it throws error. The output looks like this:
> webpack
Hash: 0aa67383ec371b8b7cd1
Version: webpack 4.19.1
Time: 362ms
Built at: 04/06/2019 10:54:46 AM
1 asset
Entrypoint main = wrapper.js
[0] ./src/index.js 223 bytes {0} [built] [failed] [1 error]
ERROR in ./src/index.js 22:4
Module parse failed: Unexpected token (22:4)
You may need an appropriate loader to handle this file type.
|
| ReactDOM.render(
> <Root />,
| document.getElementById('root'),
| );
What I see is that the problem is that webpack
also tries to transpile and minify other files in my src
directory, because it seems it has hit my React app's index.js
file. How can I exclude everything? Or more precisely, how can I tell webpack
to transpile and minify only the file /src/wrapper.js
, and not to touch anything else at all?
I have a React application, and in my application I'm relying on react-scripts
, so the build mand is defined like this "build": "react-scripts build"
, and it works all fine. Now, the point is that inside my src
directory I have a JS file called wrapper.js
, which is a standalone file, and it is pure JS, no React stuff, but it uses ES6 and some newer features. So, what I want to do is that, I want create a new mand, which will transpile and minify this file and will create a standalone copy of it. I thought to use webpack
and I created a webpack.config.js
file in the root of my project, which looks like this:
const path = require('path');
const MinifyPlugin = require('babel-minify-webpack-plugin');
module.exports = {
mode: 'production',
output: {
path: __dirname + 'build',
publicPath: '/build/',
filename: 'wrapper.js',
},
module: {
rules: [
{
test: /\.js$/,
include: [
path.resolve(__dirname, 'src', 'wrapper.js')
],
use: {
loader: 'babel-loader',
options: {
presets: ['env']
}
}
}
]
},
plugins: [
new MinifyPlugin()
]
};
And I added the following to my package.json
file "wrapper": "webpack"
. Now, when I run npm run-scripts wrapper
, it executes the webpack mand, but it throws error. The output looks like this:
> webpack
Hash: 0aa67383ec371b8b7cd1
Version: webpack 4.19.1
Time: 362ms
Built at: 04/06/2019 10:54:46 AM
1 asset
Entrypoint main = wrapper.js
[0] ./src/index.js 223 bytes {0} [built] [failed] [1 error]
ERROR in ./src/index.js 22:4
Module parse failed: Unexpected token (22:4)
You may need an appropriate loader to handle this file type.
|
| ReactDOM.render(
> <Root />,
| document.getElementById('root'),
| );
What I see is that the problem is that webpack
also tries to transpile and minify other files in my src
directory, because it seems it has hit my React app's index.js
file. How can I exclude everything? Or more precisely, how can I tell webpack
to transpile and minify only the file /src/wrapper.js
, and not to touch anything else at all?
-
3
__dirname + 'build'
you need a directory separator in that path otherwise it will be like'/your/projectbuild'
instead of'/your/project/build'
– Patrick Evans Commented Apr 6, 2019 at 9:21
2 Answers
Reset to default 5Lighter weight alternative could be to create a script in your package.json and use babel-minify
, https://babeljs.io/docs/en/babel-minify
package.json
{
...
"scripts": : {
"minify": "minify wrapper.js --out-file wrapper.min.js --mangle.keepClassName"
}
...
}
Add entry
object to your webpack.config.js
.
module.exports={
entry: './src/wrapper.js',
...
}
webpack
points the entry
object by default to ./src/index.js
.
So if you don't override entry
object, webpack
will bundle the file in ./src/index.js
Update
To point to a output
directory properly
output: {
filename: 'wrapper.js',
path: path.resolve(__dirname, 'build')
}
本文标签: javascriptHow to transpile and minify single file with webpackStack Overflow
版权声明:本文标题:javascript - How to transpile and minify single file with webpack? - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1742201756a2432090.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论