Leo*_*Leo 6 node.js gulp gulp-sourcemaps
我正在使用gulp来构建项目,以及用于生成源映射的gulp-sourcemaps.
我有几个像这样的组件:
public
|-- src
|-- comp1
| |-- c1-a.js
| |-- c1-b.js
|
|-- comp2
|-- c2-a.js
|-- c2-b.js
Run Code Online (Sandbox Code Playgroud)
我想把它们构建成以下结构:
public
|-- dist
| |-- comp1
| | |-- c1-a.min.js
| | |-- c1-a.min.js.map
| | |-- c1-b.min.js
| | |-- c1-b.min.js.map
| |
| |-- comp2
| |-- c2-a.min.js
| |-- c2-a.min.js.map
| |-- c2-b.min.js
| |-- c2-a.min.js.map
|
|-- src/
Run Code Online (Sandbox Code Playgroud)
目前我的gulp任务可以将文件生成到正确的路径:
gulp.task('component', function() {
gulp.src('./public/src/**/*.js', {base: './public/src'})
.pipe(sourcemaps.init())
.pipe(uglify())
.pipe(rename({suffix: '.min'}))
.pipe(sourcemaps.write('.', {
includeContent: false,
sourceRoot: '/src/' // here's the problem
}))
.pipe(gulp.dest('./public/dist'))
})
Run Code Online (Sandbox Code Playgroud)
但有两个问题:
将sourceRoot
在地图文件是不正确的:期待"sourceRoot":"/src/comp1/"
,但结果是"sourceRoot":"/src/"
sourceMappingURL
在压缩文件中也没有:期待,sourceMappingURL=c1-a.min.js.map
但结果是sourceMappingURL=../../comp1/c1-a.min.js.map
如何将**
零件附加到sourceRoot
并修复sourceMappingURL?
你的sourceRoot
设置是/src/
因为这就是你在这里所说的:
gulp.src('./public/src/**/*.js', {base: './public/src'})
Run Code Online (Sandbox Code Playgroud)
您已设置{base: './public/src'}
,因此接下来的所有内容都将处理相对于 的路径src
,因此这是正确的sourceRoot
。但在映射的顶部,它应该具有相对于零件中的路径"sources":[...]
(例如"sources":["comp1/c1-a.min.js.map"]
)。
不过,如果您确实想更改 sourceRoot,您可以使用sourceRoot
gulp-sourcemaps 选项来执行此操作,但那样您sources
就错了。但是,gulp-sourcemaps 版本 2.0.0-alpha(由于它是预发行版,因此您必须在您的版本中明确请求package.json
)也有一个mapSources
选项可以让您修改这些内容。
同样,您可以使用sourceMappingURLPrefix
或sourceMappingURL
来更改 sourceMappingURL。在后一种情况下,您将获得完整的file
对象,因此您可以检查例如cwd
、base
等,console.debug
或者 Visual Studio Code 在调试 npm/gulp 任务时可以提供很大帮助!那篇文章展示了如何设置断点、检查变量等,我发现这非常有用。
归档时间: |
|
查看次数: |
290 次 |
最近记录: |