我有这样的文件结构:
/server/
- package.json
- node_modules/
- Gruntfile.js
/public/
- index.html
- assets/
在/server
时,我运行npm install
,将Angular
之类的内容下载到/server/node_modules
。
然后我运行Gruntfile.js
,如下所示:
require('load-grunt-tasks')(grunt);
grunt.initConfig({
//concat js
concat: {
options: {
separator: ';',
sourceMap: true
},
lib: {
src: [
'./node_modules/angular/angular.js',
'./node_modules/angular-route/angular-route.js',
'./node_modules/angular-animate/angular-animate.js'
],
dest: '../public/assets/build/lib/lib.min.js'
}
},
//minify js
uglify: {
options: {
mange: true,
compress: true,
sourceMap: true
},
lib: {
src: '<%= concat.lib.dest %>',
dest: '<%= concat.lib.dest %>'
}
}
});
grunt.registerTask('build', ['concat', 'uglify']);
grunt文件按预期工作,使用源映射连接和缩小Angular模块。问题是域名指向公共目录,但源映射想要指向服务器目录中的Angular源代码,我认为这不会起作用。
如何解决这个问题?我是否必须在公共目录的根目录中拥有node_modules?如果可能的话,我宁愿在公共目录中没有任何预编译的代码,原因是当我把网站放到现场时,我可以简单地FTP公共目录并忽略服务器,减少不必要的批量。