如何防止webpack在源目录中生成编译文件

时间:2015-10-30 16:31:18

标签: angularjs typescript webpack

我正在将我的AngularJs项目从ES6“迁移”到TypeScript,我正在使用带有ts-loader的webpack。

问题是编译的文件和源映射是在我的文件夹中写的,而不是像使用webpack-dev-server时从内存中提供的bundle.js文件一样。

而不是在我的目录中index.ts,我最终得到:

.
├── index.js
├── index.js.map
└── index.ts

可以这样做吗?

我的tsconfig.json是:

{
  "compilerOptions": {
    "target": "es6",
    "sourceMap": true,
    "module": "commonjs"
  },
  "exclude": [
    "node_modules",
    "src/dist"
  ],
  "version": "1.6.2"
}

和webpack.config.js是:

module.exports = {
  context: PATHS.app,
  entry: {
    app: ['./index.ts']
  },
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'bundle.js'
  },

  // add resolve clause:root

  module: {
    loaders: [
    { test: /\.ts$/, exclude: /node_modeuls/, loader: 'babel-loader!ts-loader' },
    { test: /\.js$/, exclude: /node_modules/, loader: 'babel-loader' },
    { test: /\.less$/, loader: "style!css!less", exclude: /node_modules/ },
    { test: /\.html$/, loader: "html" },
    { test: /\.(ttf|eot|svg|otf)$/, loader: "file" },
    { test: /\.woff(2)?$/, loader: "url?limit=10000&minetype=application/font-woff" },
    { test: /\.jpe?g$|\.gif$|\.png$|\.svg$|\.woff$|\.ttf$|\.wav$|\.mp3$/, loader: require.resolve("file-loader") + "?name=../[path][name].[ext]"}
  ]
  },

  devServer: {
    contentBase: "./src"
  },

  devtool: '#inline-source-map'

}

1 个答案:

答案 0 :(得分:2)

我认为这与webpack但与tsc和IDE无关。

可能您的资源由IDE自动编译,默认情况下,编译结果会放在源文件旁边。

您可以尝试在IDE中禁用自动编译。大多数IDE都会识别compileOnSave选项。在tsconfig.json中将其设置为false,您应该没问题。

示例tsconfig.json

{
  "compilerOptions": {
    "target": "es6",
    "sourceMap": true,
    "module": "commonjs",
    "compileOnSave": false
  },
  "exclude": [
    "node_modules",
    "src/dist"
  ],
  "version": "1.6.2"
}

您还可以通过在outDir中定义tsconfig.json来尝试解决方法。

您的示例tsconfig.json可能看起来像

{
  "compilerOptions": {
    "target": "es6",
    "sourceMap": true,
    "module": "commonjs",
    "outDir": "compiled"
  },
  "exclude": [
    "node_modules",
    "src/dist"
  ],
  "version": "1.6.2"
}

现在所有编译结果都将放在compiled目录中,这很容易被忽略。