Nik*_*taK 7 javascript babel webpack
我在从中转译导入的模块时遇到问题node_modules。Babel出于某种原因不会转载从中导入的模块node_modules,而是转载从中导入的模块src。
这是一个示例存储库:https : //github.com/NikitaKA/babeltest
main.js
// result code contains const and let, but it shouldn't. :(
Run Code Online (Sandbox Code Playgroud)
index.js
import qs from 'query-string; // not transpiled
import lib from './lib' // transpiled
const query = qs.parse(window.location.search);
Run Code Online (Sandbox Code Playgroud)
webpack.config.js
const path = require('path');
module.exports = {
entry: './src/index.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'main.js'
},
module: {
rules: [
{
test: /\.js$/,
use: {
loader: "babel-loader"
}
}
]
}
};
Run Code Online (Sandbox Code Playgroud)
.babelrc
{
"presets": [
["@babel/preset-env", {
"modules": false,
"targets": {
"chrome": 39
}
}],
["@babel/preset-stage-1", {
"modules": false,
"decoratorsLegacy": true,
"pipelineProposal": "minimal"
}]
],
"plugins": [
"transform-es2015-constants",
"@babel/plugin-transform-block-scoping",
"@babel/plugin-transform-runtime"
]
}
Run Code Online (Sandbox Code Playgroud)
Raf*_*den 10
这种情况下的解决方案是再次转译模块,这可以通过修改excludewebpack 配置中的属性来完成:
{
test: /\.js$/,
exclude: /node_modules\/(?!(es6-module|another-es6-module)\/).*/,
},
Run Code Online (Sandbox Code Playgroud)
模块es6-module和another-es6-module将不再被 webpack 忽略,并将与您的其余源代码一起转译。
请参阅webpack 项目上的GitHub 问题。
测试webpack@3.12.0,babel-core@6.26.3和babel-core@6.26.3
扩展我的评论:
您真的不希望全部移植node_modules-这将花费很长时间,并且大多数代码中应该已经有ES5(除非它们实际上是ES6模块,在这种情况下,ES6入口点如"module"在package.json表现)。
query-string@6.x 不是,它在自述文件中这样说:
此模块针对Node.js 6或更高版本以及最新版本的Chrome,Firefox和Safari。如果要支持较旧的浏览器,请使用版本5 :
npm install query-string@5。
| 归档时间: |
|
| 查看次数: |
5887 次 |
| 最近记录: |