2017-09-14 66 views
0

我有一个Django应用程序,并使用Django的i18n模块来帮助翻译我的字符串。为了翻译JavaScript,我运行了Webpack TypeScript和xgettext翻译

python manage.py makemessages -d djangojs 

它将所有标记的字符串添加到.po文件。这对我静态文件夹中所有无聊的.js文件都很有效。但是,我们开始使用webpack将一些打字稿(.tsx文件)打包到一个bundle.js文件中。这个文件在构建完成后被复制到静态文件夹中,所以我期望Djangos makemessages也可以从中获取字符串。但是,似乎这些字符串没有正确解析,因为bundle.js中的大部分代码只是包装在eval()中的字符串。

我认为,这意味着我需要的WebPack来 - 除了bundle.js文件 - 为每个.tsx文件.js文件没有所有的eval()废话,让Django的makemessages可以正确地解析它。然而,我不知道如何做到这一点。我现在的配置是这样的

var path = require("path"); 
var WebpackShellPlugin = require('webpack-shell-plugin'); 

var config = { 
    entry: ["./src/App.tsx"], 

    output: { 
     path: path.resolve(__dirname, "build"), 
     filename: "bundle.js" 
    }, 

    devtool: 'source-map', 

    resolve: { 
     extensions: [".ts", ".tsx", ".js"] 
    }, 

    module: { 
     rules: [ 
      { 
       test: /\.tsx?$/, 
       loader: "ts-loader", 
       exclude: /node_modules/ 
      }, 
      { 
      test: /\.scss$/, 
       use: [{ 
        loader: "style-loader" // creates style nodes from JS strings 
       }, { 
        loader: "css-loader" // translates CSS into CommonJS 
       }, { 
        loader: "sass-loader" // compiles Sass to CSS 
       }] 
      }, 
      { 
       test: /\.css$/, 
       loader: 'style-loader!css-loader' 
      } 
     ] 
    }, 

    plugins: [ 
     new WebpackShellPlugin({ 
      onBuildEnd:['./cp_to_static.sh'], 
      dev: false // Needed to trigger on npm run watch 
     }) 
    ] 
}; 

module.exports = config; 
  • 那么,怎样才能使我的WebPack吐出这些文件?
  • 这是正确的做法,还是有办法让Django正确解析bundle.js?

回答

0

原来,所有的eval废话都是由webpacks“watch”函数产生的。当简单地运行webpack构建脚本时,它按预期工作