2017-12-21 16 views
0

自動生成されたpackage.jsonを、Kotlinが生成したJavaScriptファイルを指すように設定します。kotlin-frontend-pluginを使用してpackage.jsonの設定を行う方法

apply plugin: 'kotlin-platform-js' 
apply from: "$project.rootDir/gradle/deploy.gradle" 


dependencies { 
       expectedBy project(":") 

       // Compile/implementation dependencies 
       implementation "org.jetbrains.kotlin:kotlin-stdlib-js:$kotlin_version" 
} 

apply plugin: 'org.jetbrains.kotlin.frontend' 

compileKotlin2Js { 
        kotlinOptions.metaInfo = true 
        kotlinOptions.sourceMap = true 
        kotlinOptions.moduleKind = 'commonjs' 
} 

kotlinFrontend { 
        sourceMaps = true 

        npm { 
          dependency("kotlin") 
          replaceVersion("kotlin-js-library", "1.1.0") 
        } 

        define "PRODUCTION", true 

        webpackBundle { 
             bundleName = "${project.name}" 
             sourceMapEnabled = true 
        } 
} 

これは私が生成さpackage.jsonファイルに反映されることを望んだものです$ project.builDir.path /クラス/ナインにあるmyProject.jsファイルの両方を出力します。これが私の現在のGradle構成です。 (プロジェクトのビルドディレクトリにあります)出力package.jsonファイルはこのようなものです。しかし:問題はこれです

{ 
    "name": "myProject", 
    "version": "1.2.0-10-SNAPSHOT", 
    "description": "simple description", 
    "main": "myProject", 
    "dependencies": { 
     "kotlin": "*" 
    }, 
    "devDependencies": { 
     "webpack": "*", 
     "webpack-dev-server": "*", 
     "source-map-loader": "*", 
     "karma": "*", 
     "qunitjs": "1.23.1", 
     "karma-qunit": "*", 
     "karma-sourcemap-loader": "*", 
     "karma-phantomjs-launcher": "*", 
     "phantomjs-prebuilt": "*", 
     "karma-webpack": "*" 
    } 
} 

、package.jsonで「メイン」属性がにあるバンドルファイルを指していません。 classes/main/myProject.js。私は、特定のディレクトリとjsファイルにmain属性を設定する方法を見つけるためにドキュメントを調べてみましたが、見つけられませんでした。私は、gradleファイルのwebpackBundle部分にbundleNameプロパティを設定することによってのみ名前を変更できます。事前に助けてくれてありがとう!

+0

私は次のようにGradleのファイルにcompileKotlin2Jsを設定しようとしています compileKotlin2Js { kotlinOptions.metaInfo =真 kotlinOptions.sourceMap =真 kotlinOptions.moduleKind = 'commonjs' kotlinOptions.outputFile =「$プロジェクトを。 buildDir.path/$ {project.name} .js " " ただし、エラーが発生します。 無効な構成オブジェクトです。 Webpackは、APIスキーマと一致しない構成オブジェクトを使用して初期化されています。 -configuration.resolve.modules [0]は空であってはいけません –

答えて

0

だから私はgradleを使ってnpmに公開することができます。私は自分のコードに以下のビットを追加しました:

apply plugin: "com.moowork.node" 

//Must copy the output javascript file 
//to the location that the package.json expects it to be 
//This is semi-workaround since I have not found a way to 
//configure the outputted package.json file 
task copyJSFile(type: Copy){ 

    from "$project.buildDir.path/classes/main/" 
    into "${project.buildDir}" 
    include "*.js" 
} 

//We publish our project to npm 
task npmPublish(dependsOn: copyJSFile, type: NpmTask) { 
    description = "publishes the project to npm" 
    workingDir = file("${project.buildDir}") 
    args = ['publish'] 
} 

これはありませんが出力されたJavaScriptは、あなたがnpmPublish Gradleのタスクを呼び出すときpackage.jsonが設定されている場所にファイルを生成したコピーです。

関連する問題